openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2019
- 1 participants
- 2232 discussions
Hello community,
here is the log from the commit of package openSUSE-Tumbleweed-JeOS for openSUSE:Factory checked in at 2019-05-24 11:32:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-Tumbleweed-JeOS (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-Tumbleweed-JeOS.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-Tumbleweed-JeOS"
Fri May 24 11:32:19 2019 rev:14 rq:704971 version:15.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/openSUSE-Tumbleweed-JeOS/kiwi-templates-Tumbleweed-JeOS.changes 2019-04-30 13:06:33.957559627 +0200
+++ /work/SRC/openSUSE:Factory/.openSUSE-Tumbleweed-JeOS.new.5148/kiwi-templates-Tumbleweed-JeOS.changes 2019-05-24 11:32:20.141390848 +0200
@@ -1,0 +2,5 @@
+Thu May 23 09:36:26 UTC 2019 - Fabian Vogt <fvogt(a)suse.com>
+
+- Install now split jeos-firstboot-rpiwifi package
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ JeOS.kiwi ++++++
--- /var/tmp/diff_new_pack.NOEM29/_old 2019-05-24 11:32:20.713390630 +0200
+++ /var/tmp/diff_new_pack.NOEM29/_new 2019-05-24 11:32:20.713390630 +0200
@@ -355,9 +355,8 @@
<package name="dracut-kiwi-oem-repart"/>
<package name="kernel-default"/>
<!-- For WiFi: -->
+ <package name="jeos-firstboot-rpiwifi"/>
<package name="bcm43xx-firmware"/>
- <package name="wireless-tools"/>
- <package name="wpa_supplicant"/>
</packages>
<!-- TW does not have those release packages
1
0
Hello community,
here is the log from the commit of package libisds for openSUSE:Factory checked in at 2019-05-24 11:32:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libisds (Old)
and /work/SRC/openSUSE:Factory/.libisds.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libisds"
Fri May 24 11:32:12 2019 rev:9 rq:704966 version:0.10.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/libisds/libisds.changes 2018-08-27 13:47:59.860435842 +0200
+++ /work/SRC/openSUSE:Factory/.libisds.new.5148/libisds.changes 2019-05-24 11:32:14.797392890 +0200
@@ -1,0 +2,10 @@
+Wed May 22 18:48:46 UTC 2019 - Pedro Monreal Gonzalez <pmonrealgonzalez(a)suse.com>
+
+- Use the default GPGme library instead of OpenSSL [bsc#1135761]
+
+-------------------------------------------------------------------
+Tue May 21 07:29:12 UTC 2019 - Jiri Slaby <jslaby(a)suse.com>
+
+- add fix-gnutls-3.6.4.patch (fixes build)
+
+-------------------------------------------------------------------
New:
----
fix-gnutls-3.6.4.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libisds.spec ++++++
--- /var/tmp/diff_new_pack.EZOeeC/_old 2019-05-24 11:32:15.281392704 +0200
+++ /var/tmp/diff_new_pack.EZOeeC/_new 2019-05-24 11:32:15.285392703 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libisds
#
-# Copyright (c) 2018 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/
#
@@ -27,6 +27,7 @@
Source0: http://xpisar.wz.cz/%{name}/dist/%{name}-%{version}.tar.xz
Source1: http://xpisar.wz.cz/%{name}/dist/%{name}-%{version}.tar.xz.asc
Source2: %{name}.keyring
+Patch0: fix-gnutls-3.6.4.patch
BuildRequires: gpg2
BuildRequires: libgcrypt-devel
BuildRequires: libgpgme-devel
@@ -63,6 +64,7 @@
%prep
%setup -q
+%autopatch -p1
%build
%configure \
@@ -70,7 +72,7 @@
--disable-static \
--enable-test \
--with-libcurl \
- --enable-openssl-backend
+ --disable-openssl-backend
make %{?_smp_mflags}
%check
++++++ fix-gnutls-3.6.4.patch ++++++
From: =?utf8?q?Petr=20P=C3=ADsa=C5=99?= <petr.pisar(a)atlas.cz>
Date: Wed, 24 Apr 2019 04:32:09 +0200
Subject: [PATCH] Test: Accept IE_NETWORK error when client does not provide a
correct certificate
Git-commit: 5cc5b83788e229582bd048a630b3151a140f9437
Patch-mainline: yes
After upgrading GnuTLS to 3.6.4,
test/simline/certificate_user_password_authentication tests that exhibit
a missing client's certificate and a bad client's certificate started to
fail. That's because cURL returns a network error instead of a TLS error in
that case when TLSv1.3 is used.
This patch work arounds this cURL deficiency.
See a similar GnuTLS bug report
<https://gitlab.com/gnutls/gnutls/issues/615>.
---
test/simline/certificate_user_password_authentication.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/test/simline/certificate_user_password_authentication.c b/test/simline/certificate_user_password_authentication.c
index c0192ab..7789d7c 100644
--- a/test/simline/certificate_user_password_authentication.c
+++ b/test/simline/certificate_user_password_authentication.c
@@ -35,7 +35,11 @@ static int test_login(const isds_error error, struct isds_ctx *context,
isds_error err;
err = isds_login(context, url, username, password, pki_credentials, otp);
- if (error != err)
+ /* If TLSv1.3 is used, cURL reports a network error instead of a security
+ * error if server refuses client's certificate (since GnuTLS 3.6.4).
+ * Maybe a <https://gitlab.com/gnutls/gnutls/issues/615>. As a workaround,
+ * accept IE_NETWORK if IE_SECURITY was expected. */
+ if (error != err && (IE_SECURITY != error || IE_NETWORK != err))
FAIL_TEST("Wrong return code: expected=%s, returned=%s (%s)",
isds_strerror(error), isds_strerror(err),
isds_long_message(context));
--
2.10.5.GIT
1
0
Hello community,
here is the log from the commit of package FirmwareUpdateKit for openSUSE:Factory checked in at 2019-05-24 11:32:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/FirmwareUpdateKit (Old)
and /work/SRC/openSUSE:Factory/.FirmwareUpdateKit.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "FirmwareUpdateKit"
Fri May 24 11:32:09 2019 rev:20 rq:704964 version:2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/FirmwareUpdateKit/FirmwareUpdateKit.changes 2018-03-11 15:25:05.731550558 +0100
+++ /work/SRC/openSUSE:Factory/.FirmwareUpdateKit.new.5148/FirmwareUpdateKit.changes 2019-05-24 11:32:10.617394228 +0200
@@ -0,0 +1,25 @@
+--------------------------------------------------------------------
+Thu May 23 08:31:46 UTC 2019 - wfeldt(a)opensuse.org
+
+- correct license
+- 2.0
+- removing patch support_mkisofs.patch
+- removing patch user_executable.patch
+
+--------------------------------------------------------------------
+Thu May 23 08:17:19 UTC 2019 - wfeldt(a)opensuse.org
+
+- merge gh#wfeldt/FirmwareUpdateKit#2
+- set PATH to sensible system default
+
+--------------------------------------------------------------------
+Thu May 23 08:07:37 UTC 2019 - wfeldt(a)opensuse.org
+
+- merge gh#wfeldt/FirmwareUpdateKit#1
+- adjust script to work again (bsc#1099527)
+- update git2log to latest version
+- adjust Makefile to current toolchain
+- add --version option
+- enable 'use strict'
+- add grub2 support
+
Old:
----
FirmwareUpdateKit-1.6.tar.bz2
support_mkisofs.patch
user_executable.patch
New:
----
FirmwareUpdateKit-2.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ FirmwareUpdateKit.spec ++++++
--- /var/tmp/diff_new_pack.Eb5wm6/_old 2019-05-24 11:32:11.121394099 +0200
+++ /var/tmp/diff_new_pack.Eb5wm6/_new 2019-05-24 11:32:11.125394097 +0200
@@ -1,7 +1,7 @@
#
# spec file for package FirmwareUpdateKit
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2008 Steffen Winterfeldt
#
# All modifications and additions to the file contributed by third parties
@@ -18,14 +18,12 @@
Name: FirmwareUpdateKit
-Version: 1.6
+Version: 2.0
Release: 0
Summary: Assist with DOS-based firmware updates
-License: GPL-3.0-or-later
+License: GPL-3.0-only
Group: System/Boot
-Source: FirmwareUpdateKit-1.6.tar.bz2
-Patch1: support_mkisofs.patch
-Patch2: user_executable.patch
+Source: %{name}-%{version}.tar.xz
Requires: dosfstools
%if 0%{suse_version} >= 1500
Requires: mkisofs
@@ -44,8 +42,6 @@
%prep
%setup -q
-%patch1 -p1
-%patch2 -p1
%build
1
0
Hello community,
here is the log from the commit of package python-nbxmpp for openSUSE:Factory checked in at 2019-05-24 11:32:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-nbxmpp (Old)
and /work/SRC/openSUSE:Factory/.python-nbxmpp.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-nbxmpp"
Fri May 24 11:32:06 2019 rev:22 rq:704963 version:0.6.10
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-nbxmpp/python-nbxmpp.changes 2019-02-01 11:48:18.568376014 +0100
+++ /work/SRC/openSUSE:Factory/.python-nbxmpp.new.5148/python-nbxmpp.changes 2019-05-24 11:32:08.345394814 +0200
@@ -1,0 +2,8 @@
+Thu May 23 05:21:13 UTC 2019 - mvetter(a)suse.com
+
+- Update to 0.6.10:
+ * Add support for domain based name in features for GSSAPI
+ * Fix usage of BOSH
+ * Fix Jingle hash namespace
+
+-------------------------------------------------------------------
Old:
----
nbxmpp-0.6.9.tar.gz
New:
----
nbxmpp-0.6.10.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-nbxmpp.spec ++++++
--- /var/tmp/diff_new_pack.qYNRvX/_old 2019-05-24 11:32:08.941394660 +0200
+++ /var/tmp/diff_new_pack.qYNRvX/_new 2019-05-24 11:32:08.945394658 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define _name nbxmpp
Name: python-nbxmpp
-Version: 0.6.9
+Version: 0.6.10
Release: 0
Summary: XMPP library by Gajim team
License: GPL-3.0-or-later
++++++ nbxmpp-0.6.9.tar.gz -> nbxmpp-0.6.10.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbxmpp-0.6.9/ChangeLog new/nbxmpp-0.6.10/ChangeLog
--- old/nbxmpp-0.6.9/ChangeLog 2019-01-08 22:08:10.000000000 +0100
+++ new/nbxmpp-0.6.10/ChangeLog 2019-02-18 20:51:20.000000000 +0100
@@ -1,3 +1,9 @@
+python-nbxmpp 0.6.10 (19 February 2019)
+
+ * Add support for domain based name in features for GSSAPI
+ * Fix usage of BOSH
+ * Fix Jingle hash namespace
+
python-nbxmpp 0.6.9 (10 January 2019)
* Always bind after SM failed Fixes #64
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbxmpp-0.6.9/PKG-INFO new/nbxmpp-0.6.10/PKG-INFO
--- old/nbxmpp-0.6.9/PKG-INFO 2019-01-08 22:09:00.000000000 +0100
+++ new/nbxmpp-0.6.10/PKG-INFO 2019-02-18 20:52:18.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: nbxmpp
-Version: 0.6.9
+Version: 0.6.10
Summary: Non blocking Jabber/XMPP module
Home-page: http://dev.gajim.org/gajim/python-nbxmpp
Author: Yann Leboulanger
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbxmpp-0.6.9/nbxmpp/__init__.py new/nbxmpp-0.6.10/nbxmpp/__init__.py
--- old/nbxmpp-0.6.9/nbxmpp/__init__.py 2019-01-08 22:08:10.000000000 +0100
+++ new/nbxmpp-0.6.10/nbxmpp/__init__.py 2019-02-18 20:51:20.000000000 +0100
@@ -17,4 +17,4 @@
from .plugin import PlugIn
from .smacks import Smacks
-__version__ = "0.6.9"
+__version__ = "0.6.10"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbxmpp-0.6.9/nbxmpp/auth_nb.py new/nbxmpp-0.6.10/nbxmpp/auth_nb.py
--- old/nbxmpp-0.6.9/nbxmpp/auth_nb.py 2019-01-08 22:08:10.000000000 +0100
+++ new/nbxmpp-0.6.10/nbxmpp/auth_nb.py 2019-02-18 20:51:20.000000000 +0100
@@ -24,7 +24,7 @@
from __future__ import unicode_literals
from .protocol import NS_SASL, NS_SESSION, NS_STREAMS, NS_BIND, NS_AUTH
-from .protocol import NS_STREAM_MGMT
+from .protocol import NS_STREAM_MGMT, NS_DOMAIN_BASED_NAME
from .protocol import Node, NodeProcessed, isResultNode, Iq, Protocol, JID
from .plugin import PlugIn
import sys
@@ -124,6 +124,7 @@
self.channel_binding = channel_binding
self.enabled_auth_mechs = auth_mechs
self.realm = None
+ self._domain_based_name = None
def plugin(self, owner):
if 'version' not in self._owner.Dispatcher.Stream._document_attrs:
@@ -189,6 +190,10 @@
in feats.getTag('mechanisms', namespace=NS_SASL).getTags('mechanism')
) & self.enabled_auth_mechs
+ hostname = feats.getTag('hostname', namespace=NS_DOMAIN_BASED_NAME)
+ if hostname is not None:
+ self._domain_based_name = hostname.getData()
+
# Password based authentication mechanism ordered by strength.
# If the server supports a mechanism disable all weaker mechanisms.
password_auth_mechs_strength = ['SCRAM-SHA-1-PLUS', 'SCRAM-SHA-1',
@@ -229,9 +234,9 @@
raise NodeProcessed
if 'GSSAPI' in self.mecs and have_kerberos:
self.mecs.remove('GSSAPI')
+ hostname = self._domain_based_name or self._owner.xmpp_hostname
try:
- self.gss_vc = kerberos.authGSSClientInit('xmpp@' + \
- self._owner.xmpp_hostname)[1]
+ self.gss_vc = kerberos.authGSSClientInit('xmpp@%s' % hostname)[1]
kerberos.authGSSClientStep(self.gss_vc, '')
response = kerberos.authGSSClientResponse(self.gss_vc)
node=Node('auth', attrs={'xmlns': NS_SASL,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbxmpp-0.6.9/nbxmpp/bosh.py new/nbxmpp-0.6.10/nbxmpp/bosh.py
--- old/nbxmpp-0.6.9/nbxmpp/bosh.py 2019-01-08 22:08:10.000000000 +0100
+++ new/nbxmpp-0.6.10/nbxmpp/bosh.py 2019-02-18 20:51:20.000000000 +0100
@@ -44,7 +44,6 @@
idlequeue, estabilish_tls, certs, tls_version, cipher_list)
self.bosh_sid = None
- self.bosh_xml_lang = self._owner.lang
self.http_version = 'HTTP/1.1'
self.http_persistent = True
@@ -413,7 +412,7 @@
t = BOSHBody(
attrs={ 'to': self.bosh_to,
'sid': self.bosh_sid,
- 'xml:lang': self.bosh_xml_lang,
+ 'xml:lang': self._owner.lang,
'xmpp:restart': 'true',
'secure': self.bosh_secure,
'xmlns:xmpp': 'urn:xmpp:xbosh'})
@@ -424,7 +423,7 @@
'route': 'xmpp:%s:%s' % (self.route_host, self.route_port),
'to': self.bosh_to,
'wait': str(self.bosh_wait),
- 'xml:lang': self.bosh_xml_lang,
+ 'xml:lang': self._owner.lang,
'xmpp:version': '1.0',
'ver': '1.6',
'xmlns:xmpp': 'urn:xmpp:xbosh'})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbxmpp-0.6.9/nbxmpp/protocol.py new/nbxmpp-0.6.10/nbxmpp/protocol.py
--- old/nbxmpp-0.6.9/nbxmpp/protocol.py 2019-01-08 22:08:10.000000000 +0100
+++ new/nbxmpp-0.6.10/nbxmpp/protocol.py 2019-02-18 20:51:20.000000000 +0100
@@ -190,6 +190,7 @@
NS_HASHES_BLAKE2B_256 = 'urn:xmpp:hash-function-text-names:id-blake2b256'
NS_HASHES_BLAKE2B_512 = 'urn:xmpp:hash-function-text-names:id-blake2b512'
NS_OPENPGP = 'urn:xmpp:openpgp:0'
+NS_DOMAIN_BASED_NAME = 'urn:xmpp:domain-based-name:1'
#xmpp_stream_error_conditions = '''
#bad-format -- -- -- The entity has sent XML that cannot be processed.
@@ -1430,7 +1431,7 @@
supported = ('sha-256', 'sha-512', 'sha3-256', 'sha3-512', 'blake2b-256', 'blake2b-512')
- def __init__(self, nsp=NS_HASHES):
+ def __init__(self, nsp=NS_HASHES_2):
Node.__init__(self, None, {}, [], None, None, False, None)
self.setNamespace(nsp)
self.setName('hash')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbxmpp-0.6.9/setup.py new/nbxmpp-0.6.10/setup.py
--- old/nbxmpp-0.6.9/setup.py 2019-01-08 22:08:10.000000000 +0100
+++ new/nbxmpp-0.6.10/setup.py 2019-02-18 20:51:20.000000000 +0100
@@ -3,7 +3,7 @@
from distutils.core import setup
setup(name='nbxmpp',
- version='0.6.9',
+ version='0.6.10',
description='Non blocking Jabber/XMPP module',
author='Yann Leboulanger',
author_email='asterix(a)lagaule.org',
1
0
Hello community,
here is the log from the commit of package python-Cheetah3 for openSUSE:Factory checked in at 2019-05-24 11:32:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Cheetah3 (Old)
and /work/SRC/openSUSE:Factory/.python-Cheetah3.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Cheetah3"
Fri May 24 11:32:02 2019 rev:7 rq:704958 version:3.2.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Cheetah3/python-Cheetah3.changes 2019-05-22 11:16:08.326526457 +0200
+++ /work/SRC/openSUSE:Factory/.python-Cheetah3.new.5148/python-Cheetah3.changes 2019-05-24 11:32:05.893395445 +0200
@@ -1,0 +2,9 @@
+Thu May 23 08:00:15 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 3.2.3
+ - Fixed infinite recursion in ``ImportManager`` on importing
+ a builtin module.
+ - The site https://cheetahtemplate.org/ is now served with HTTPS.
+ - Updated docs regarding fixed tests.
+
+-------------------------------------------------------------------
Old:
----
Cheetah3-3.2.2.tar.gz
New:
----
Cheetah3-3.2.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Cheetah3.spec ++++++
--- /var/tmp/diff_new_pack.FuGefr/_old 2019-05-24 11:32:06.497395289 +0200
+++ /var/tmp/diff_new_pack.FuGefr/_new 2019-05-24 11:32:06.497395289 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-Cheetah3
-Version: 3.2.2
+Version: 3.2.3
Release: 0
Summary: Template engine and code generation tool
License: MIT
++++++ Cheetah3-3.2.2.tar.gz -> Cheetah3-3.2.3.tar.gz ++++++
++++ 62704 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-pygerrit2 for openSUSE:Factory checked in at 2019-05-24 11:32:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pygerrit2 (Old)
and /work/SRC/openSUSE:Factory/.python-pygerrit2.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pygerrit2"
Fri May 24 11:32:00 2019 rev:2 rq:704957 version:2.0.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pygerrit2/python-pygerrit2.changes 2018-12-19 13:54:02.490901049 +0100
+++ /work/SRC/openSUSE:Factory/.python-pygerrit2.new.5148/python-pygerrit2.changes 2019-05-24 11:32:01.237396644 +0200
@@ -1,0 +2,11 @@
+Thu May 23 07:50:13 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 2.0.9
+ * Run livetests against 2.15.11 and 2.16.6
+ * Don't attempt to parse empty response content
+ * Raise exception for error status before attempting to parse content
+ * Add debug log of response content type, status code and encoding
+ * Add a test for PUT request with a json file
+ * Bump pytest from 4.2.1 to 4.3.0
+
+-------------------------------------------------------------------
Old:
----
pygerrit2-2.0.7.tar.gz
New:
----
pygerrit2-2.0.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pygerrit2.spec ++++++
--- /var/tmp/diff_new_pack.Qh5BW3/_old 2019-05-24 11:32:01.757396510 +0200
+++ /var/tmp/diff_new_pack.Qh5BW3/_new 2019-05-24 11:32:01.761396509 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-pygerrit2
#
-# Copyright (c) 2018 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
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pygerrit2
-Version: 2.0.7
+Version: 2.0.9
Release: 0
Summary: Client library for interacting with Gerrit code review
License: MIT
@@ -36,7 +36,7 @@
# SECTION test requirements
BuildRequires: %{python_module mock}
BuildRequires: %{python_module pbr >= 0.8.0}
-BuildRequires: %{python_module requests >= 2.10.0}
+BuildRequires: %{python_module requests >= 2.20.0}
# /SECTION
%python_subpackages
++++++ pygerrit2-2.0.7.tar.gz -> pygerrit2-2.0.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/AUTHORS new/pygerrit2-2.0.9/AUTHORS
--- old/pygerrit2-2.0.7/AUTHORS 2018-07-19 06:01:50.000000000 +0200
+++ new/pygerrit2-2.0.9/AUTHORS 2019-02-28 06:27:03.000000000 +0100
@@ -22,3 +22,5 @@
Peter Theckanath <peter.xa.theckanath(a)sonymobile.com>
Vasiliy Kleschov <vkleschov(a)cloudlinux.com>
Vineet Naik <vineet(a)helpshift.com>
+z-w-k <welcome.albert.z(a)gmail.com>
+z-w-k <welcome.albert.z(a)gmial.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/ChangeLog new/pygerrit2-2.0.9/ChangeLog
--- old/pygerrit2-2.0.7/ChangeLog 2018-07-19 06:01:50.000000000 +0200
+++ new/pygerrit2-2.0.9/ChangeLog 2019-02-28 06:27:03.000000000 +0100
@@ -1,6 +1,66 @@
CHANGES
=======
+2.0.9
+-----
+
+* Run livetests against 2.15.11 and 2.16.6
+* Don't attempt to parse empty response content
+* Raise exception for error status before attempting to parse content
+* Add debug log of response content type, status code and encoding
+* Add a test for PUT request with a json file
+* Bump pytest from 4.2.1 to 4.3.0
+* Bump pytest from 4.2.0 to 4.2.1
+* Run live tests against 2.15.10 and 2.16.5
+* Bump pytest from 4.1.1 to 4.2.0
+* Fixed an issue with duplicate output log message
+* Run livetests against 2.15.9 and 2.16.4
+* Set logger format and name
+* Run livetests with 2.14.18, 2.15.8 and 2.16.3
+* Bump pytest from 4.1.0 to 4.1.1
+* Bump pytest from 4.0.2 to 4.1.0
+* Run livetests with 2.16.2
+* Bump pytest from 4.0.1 to 4.0.2
+* Add dependabot badge on the pypi description file
+* Run livetests against 2.16.1
+* Bump requests from 2.20.1 to 2.21.0
+* Bump pytest from 4.0.0 to 4.0.1
+* Drop livetests against 2.13.x
+* Run livetests against 2.16 final release
+* Bump pytest from 3.10.1 to 4.0.0
+* Remove unnecessary warning log
+* Run livetests against 2.14.17 and 2.15.7
+* Bump pytest from 3.10.0 to 3.10.1
+
+2.0.8
+-----
+
+* Bump requests from 2.20.0 to 2.20.1
+* Run livetests against 2.16-rc3
+* Bump pbr from 5.1.0 to 5.1.1
+* Bump pytest from 3.9.3 to 3.10.0
+* Run livetests against 2.16-rc1
+* CVE-2018-18074: Upgrade requests to >=2.20.0
+* Run livetests against 2.16-rc0
+* Bump pytest from 3.9.2 to 3.9.3
+* Run livetests against 2.14.16 and 2.15.6
+* Bump pbr from 5.0.0 to 5.1.0
+* Bump pytest from 3.9.1 to 3.9.2
+* Add dependabot status badge
+* Bump pytest from 3.8.2 to 3.9.1
+* Bump pydocstyle from 2.1.1 to 3.0.0
+* Bump pbr from 4.2.0 to 4.3.0
+* Run livetests against 2.14.14 and 2.15.4
+* Bump pytest from 3.8.1 to 3.8.2
+* Bump pytest from 3.8.0 to 3.8.1
+* Run livetests against 2.14.13
+* Run livetests against 2.14.12
+* Bump pytest from 3.7.4 to 3.8.0
+* Bump pytest from 3.7.3 to 3.7.4
+* Update dependencies
+* Run livetests with Gerrit 2.14.11
+* Update Programming Language classifiers
+
2.0.7
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/PKG-INFO new/pygerrit2-2.0.9/PKG-INFO
--- old/pygerrit2-2.0.7/PKG-INFO 2018-07-19 06:01:50.000000000 +0200
+++ new/pygerrit2-2.0.9/PKG-INFO 2019-02-28 06:27:04.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pygerrit2
-Version: 2.0.7
+Version: 2.0.9
Summary: Client library for interacting with Gerrit's REST API
Home-page: https://github.com/dpursehouse/pygerrit2
Author: David Pursehouse
@@ -15,6 +15,8 @@
.. image:: https://travis-ci.org/dpursehouse/pygerrit2.svg?branch=master
+ .. image:: https://api.dependabot.com/badges/status?host=github&repo=dpursehouse/pyger…
+
Pygerrit2 provides a simple interface for clients to interact with
`Gerrit Code Review`_ via the REST API.
@@ -43,8 +45,9 @@
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Operating System :: MacOS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/Pipfile.lock new/pygerrit2-2.0.9/Pipfile.lock
--- old/pygerrit2-2.0.7/Pipfile.lock 2018-07-13 02:28:01.000000000 +0200
+++ new/pygerrit2-2.0.9/Pipfile.lock 2019-02-19 13:48:24.000000000 +0100
@@ -16,10 +16,10 @@
"default": {
"certifi": {
"hashes": [
- "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7",
- "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0"
+ "sha256:47f9c83ef4c0c621eaef743f133f09fa8a74a9b75f037e8624f83bd1b6626cb7",
+ "sha256:993f830721089fef441cdfeb4b2c8c9df86f0c63239f06bd025a76a7daddb033"
],
- "version": "==2018.4.16"
+ "version": "==2018.11.29"
},
"chardet": {
"hashes": [
@@ -34,49 +34,48 @@
},
"idna": {
"hashes": [
- "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e",
- "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16"
+ "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407",
+ "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"
],
- "version": "==2.7"
+ "version": "==2.8"
},
"pbr": {
"hashes": [
- "sha256:4f2b11d95917af76e936811be8361b2b19616e5ef3b55956a429ec7864378e0c",
- "sha256:e0f23b61ec42473723b2fec2f33fb12558ff221ee551962f01dd4de9053c2055"
+ "sha256:a7953f66e1f82e4b061f43096a4bcc058f7d3d41de9b94ac871770e8bdd831a2",
+ "sha256:d717573351cfe09f49df61906cd272abaa759b3e91744396b804965ff7bff38b"
],
- "version": "==4.1.0"
+ "version": "==5.1.2"
},
"requests": {
"hashes": [
- "sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1",
- "sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a"
+ "sha256:502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e",
+ "sha256:7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b"
],
"index": "pypi",
- "version": "==2.19.1"
+ "version": "==2.21.0"
},
"urllib3": {
"hashes": [
- "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf",
- "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5"
+ "sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39",
+ "sha256:de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"
],
- "markers": "python_version != '3.3.*' and python_version != '3.2.*' and python_version < '4' and python_version >= '2.6' and python_version != '3.1.*' and python_version != '3.0.*'",
- "version": "==1.23"
+ "version": "==1.24.1"
}
},
"develop": {
"atomicwrites": {
"hashes": [
- "sha256:240831ea22da9ab882b551b31d4225591e5e447a68c5e188db5b89ca1d487585",
- "sha256:a24da68318b08ac9c9c45029f4a10371ab5b20e4226738e150e6e7c571630ae6"
+ "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4",
+ "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"
],
- "version": "==1.1.5"
+ "version": "==1.3.0"
},
"attrs": {
"hashes": [
- "sha256:4b90b09eeeb9b88c35bc642cbac057e45a5fd85367b985bd2809c62b7b939265",
- "sha256:e0d0eb91441a3b53dab4d9b743eafc1ac44476296a2053b6ca3af0b139faf87b"
+ "sha256:10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69",
+ "sha256:ca4be454458f9dec299268d472aaa5a11f67a4ff70093396e1ceae9c76cf4bbb"
],
- "version": "==18.1.0"
+ "version": "==18.2.0"
},
"blindspin": {
"hashes": [
@@ -87,10 +86,10 @@
},
"certifi": {
"hashes": [
- "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7",
- "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0"
+ "sha256:47f9c83ef4c0c621eaef743f133f09fa8a74a9b75f037e8624f83bd1b6626cb7",
+ "sha256:993f830721089fef441cdfeb4b2c8c9df86f0c63239f06bd025a76a7daddb033"
],
- "version": "==2018.4.16"
+ "version": "==2018.11.29"
},
"chardet": {
"hashes": [
@@ -101,10 +100,10 @@
},
"colorama": {
"hashes": [
- "sha256:463f8483208e921368c9f306094eb6f725c6ca42b0f97e313cb5d5512459feda",
- "sha256:48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1"
+ "sha256:05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d",
+ "sha256:f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"
],
- "version": "==0.3.9"
+ "version": "==0.4.1"
},
"crayons": {
"hashes": [
@@ -115,17 +114,17 @@
},
"docker": {
"hashes": [
- "sha256:52cf5b1c3c394f9abf897638bfc3336d6b63a0f65969d0d4d2da6d3b1d8032b6",
- "sha256:ad077b49660b711d20f50f344f70cfae014d635ef094bf21b0d7df5f0aeedf99"
+ "sha256:2840ffb9dc3ef6d00876bde476690278ab13fa1f8ba9127ef855ac33d00c3152",
+ "sha256:5831256da3477723362bc71a8df07b8cd8493e4a4a60cebd45580483edbe48ae"
],
- "version": "==3.4.1"
+ "version": "==3.7.0"
},
"docker-pycreds": {
"hashes": [
- "sha256:0a941b290764ea7286bd77f54c0ace43b86a8acd6eb9ead3de9840af52384079",
- "sha256:8b0e956c8d206f832b06aa93a710ba2c3bcbacb5a314449c040b0b814355bbff"
+ "sha256:6ce3270bcaf404cc4c3e27e4b6c70d3521deae82fb508767870fdbf772d584d4",
+ "sha256:7266112468627868005106ec19cd0d722702d2b7d5912a28e19b826c3d37af49"
],
- "version": "==0.3.0"
+ "version": "==0.4.0"
},
"e1839a8": {
"editable": true,
@@ -141,10 +140,10 @@
},
"idna": {
"hashes": [
- "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e",
- "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16"
+ "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407",
+ "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"
],
- "version": "==2.7"
+ "version": "==2.8"
},
"mccabe": {
"hashes": [
@@ -163,35 +162,32 @@
},
"more-itertools": {
"hashes": [
- "sha256:2b6b9893337bfd9166bee6a62c2b0c9fe7735dcf85948b387ec8cba30e85d8e8",
- "sha256:6703844a52d3588f951883005efcf555e49566a48afd4db4e965d69b883980d3",
- "sha256:a18d870ef2ffca2b8463c0070ad17b5978056f403fb64e3f15fe62a52db21cc0"
+ "sha256:0125e8f60e9e031347105eb1682cef932f5e97d7b9a1a28d9bf00c22a5daef40",
+ "sha256:590044e3942351a1bdb1de960b739ff4ce277960f2425ad4509446dbace8d9d1"
],
- "version": "==4.2.0"
+ "markers": "python_version > '2.7'",
+ "version": "==6.0.0"
},
"pbr": {
"hashes": [
- "sha256:4f2b11d95917af76e936811be8361b2b19616e5ef3b55956a429ec7864378e0c",
- "sha256:e0f23b61ec42473723b2fec2f33fb12558ff221ee551962f01dd4de9053c2055"
+ "sha256:a7953f66e1f82e4b061f43096a4bcc058f7d3d41de9b94ac871770e8bdd831a2",
+ "sha256:d717573351cfe09f49df61906cd272abaa759b3e91744396b804965ff7bff38b"
],
- "version": "==4.1.0"
+ "version": "==5.1.2"
},
"pluggy": {
"hashes": [
- "sha256:7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff",
- "sha256:d345c8fe681115900d6da8d048ba67c25df42973bda370783cd58826442dcd7c",
- "sha256:e160a7fcf25762bb60efc7e171d4497ff1d8d2d75a3d0df7a21b76821ecbf5c5"
+ "sha256:8ddc32f03971bfdf900a81961a48ccf2fb677cf7715108f85295c67405798616",
+ "sha256:980710797ff6a041e9a73a5787804f848996ecaa6f8a1b1e08224a5894f2074a"
],
- "markers": "python_version != '3.3.*' and python_version != '3.2.*' and python_version != '3.1.*' and python_version != '3.0.*' and python_version >= '2.7'",
- "version": "==0.6.0"
+ "version": "==0.8.1"
},
"py": {
"hashes": [
- "sha256:3fd59af7435864e1a243790d322d763925431213b6b8529c6ca71081ace3bbf7",
- "sha256:e31fb2767eb657cbde86c454f02e99cb846d3cd9d61b318525140214fdc0e98e"
+ "sha256:bf92637198836372b520efcba9e020c330123be8ce527e535d185ed4b6f45694",
+ "sha256:e76826342cefe3c3d5f7e8ee4316b80d1dd8a300781612ddbc765c17ba25a6c6"
],
- "markers": "python_version != '3.3.*' and python_version != '3.2.*' and python_version != '3.1.*' and python_version != '3.0.*' and python_version >= '2.7'",
- "version": "==1.5.4"
+ "version": "==1.7.0"
},
"pycodestyle": {
"hashes": [
@@ -202,12 +198,12 @@
},
"pydocstyle": {
"hashes": [
- "sha256:08a870edc94508264ed90510db466c6357c7192e0e866561d740624a8fc7d90c",
- "sha256:4d5bcde961107873bae621f3d580c3e35a426d3687ffc6f8fb356f6628da5a97",
- "sha256:af9fcccb303899b83bec82dc9a1d56c60fc369973223a5e80c3dfa9bdf984405"
+ "sha256:2258f9b0df68b97bf3a6c29003edc5238ff8879f1efb6f1999988d934e432bd8",
+ "sha256:5741c85e408f9e0ddf873611085e819b809fca90b619f5fd7f34bd4959da3dd4",
+ "sha256:ed79d4ec5e92655eccc21eb0c6cf512e69512b4a97d215ace46d17e4990f2039"
],
"index": "pypi",
- "version": "==2.1.1"
+ "version": "==3.0.0"
},
"pyflakes": {
"hashes": [
@@ -219,26 +215,26 @@
},
"pytest": {
"hashes": [
- "sha256:0453c8676c2bee6feb0434748b068d5510273a916295fd61d306c4f22fbfd752",
- "sha256:4b208614ae6d98195430ad6bde03641c78553acee7c83cec2e85d613c0cd383d"
+ "sha256:067a1d4bf827ffdd56ad21bd46674703fce77c5957f6c1eef731f6146bfcef1c",
+ "sha256:9687049d53695ad45cf5fdc7bbd51f0c49f1ea3ecfc4b7f3fde7501b541f17f4"
],
"index": "pypi",
- "version": "==3.6.3"
+ "version": "==4.3.0"
},
"requests": {
"hashes": [
- "sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1",
- "sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a"
+ "sha256:502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e",
+ "sha256:7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b"
],
"index": "pypi",
- "version": "==2.19.1"
+ "version": "==2.21.0"
},
"six": {
"hashes": [
- "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
- "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
+ "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c",
+ "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
],
- "version": "==1.11.0"
+ "version": "==1.12.0"
},
"snowballstemmer": {
"hashes": [
@@ -249,31 +245,30 @@
},
"testcontainers": {
"hashes": [
- "sha256:3a9e6801106c7f3435635ea3b73de6dfd4cba932e0e89a1217e6098edd816dad"
+ "sha256:46d316ac19aa7257c604d9a2e89e0db4cd67007aeb5ae6d8d7975ba163ec23ff"
],
"index": "pypi",
- "version": "==2.2"
+ "version": "==2.3"
},
"urllib3": {
"hashes": [
- "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf",
- "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5"
+ "sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39",
+ "sha256:de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"
],
- "markers": "python_version != '3.3.*' and python_version != '3.2.*' and python_version < '4' and python_version >= '2.6' and python_version != '3.1.*' and python_version != '3.0.*'",
- "version": "==1.23"
+ "version": "==1.24.1"
},
"websocket-client": {
"hashes": [
- "sha256:18f1170e6a1b5463986739d9fd45c4308b0d025c1b2f9b88788d8f69e8a5eb4a",
- "sha256:db70953ae4a064698b27ae56dcad84d0ee68b7b43cb40940f537738f38f510c1"
+ "sha256:8c8bf2d4f800c3ed952df206b18c28f7070d9e3dcbd6ca6291127574f57ee786",
+ "sha256:e51562c91ddb8148e791f0155fdb01325d99bb52c4cdbb291aee7a3563fd0849"
],
- "version": "==0.48.0"
+ "version": "==0.54.0"
},
"wrapt": {
"hashes": [
- "sha256:d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6"
+ "sha256:4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533"
],
- "version": "==1.10.11"
+ "version": "==1.11.1"
}
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/README.md new/pygerrit2-2.0.9/README.md
--- old/pygerrit2-2.0.7/README.md 2018-07-09 07:37:31.000000000 +0200
+++ new/pygerrit2-2.0.9/README.md 2018-10-17 12:26:43.000000000 +0200
@@ -3,6 +3,7 @@
![Version](https://img.shields.io/pypi/v/pygerrit2.svg)
![License](https://img.shields.io/pypi/l/pygerrit2.svg)
[![Build Status](https://travis-ci.org/dpursehouse/pygerrit2.svg?branch=master)](htt…
+[![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=dpursehou…
Pygerrit2 provides a simple interface for clients to interact with
[Gerrit Code Review][gerrit] via the REST API. It is based on [pygerrit][pygerrit]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/description.rst new/pygerrit2-2.0.9/description.rst
--- old/pygerrit2-2.0.7/description.rst 2018-06-16 05:03:43.000000000 +0200
+++ new/pygerrit2-2.0.9/description.rst 2018-12-11 12:24:51.000000000 +0100
@@ -7,6 +7,8 @@
.. image:: https://travis-ci.org/dpursehouse/pygerrit2.svg?branch=master
+.. image:: https://api.dependabot.com/badges/status?host=github&repo=dpursehouse/pyger…
+
Pygerrit2 provides a simple interface for clients to interact with
`Gerrit Code Review`_ via the REST API.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/livetests.py new/pygerrit2-2.0.9/livetests.py
--- old/pygerrit2-2.0.7/livetests.py 2018-07-19 03:14:36.000000000 +0200
+++ new/pygerrit2-2.0.9/livetests.py 2019-02-28 06:21:01.000000000 +0100
@@ -52,7 +52,8 @@
api.get("/changes/")
-(a)pytest.fixture(scope="module", params=["2.13.11", "2.14.10", "2.15.3"])
+(a)pytest.fixture(scope="module",
+ params=["2.14.18", "2.15.11", "2.16.6"])
def gerrit_api(request):
"""Create a Gerrit container for the given version and return an API."""
with GerritContainer(request.param) as gerrit:
@@ -145,6 +146,13 @@
gerrit_api.put("/changes/" + change_id + "/edit/foo",
data="Content with non base64 valid chars åäö")
+ def test_put_json_content(self, gerrit_api):
+ """Test a PUT request with a json file content (issue #54)."""
+ change_id = self._get_test_change(gerrit_api)["id"]
+ content = """{"foo" : "bar"}"""
+ gerrit_api.put("/changes/" + change_id + "/edit/file.json",
+ data=content)
+
def test_get_base64_data(self, gerrit_api):
"""Test a GET request on an API that returns base64 encoded response.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/pygerrit2/rest/__init__.py new/pygerrit2-2.0.9/pygerrit2/rest/__init__.py
--- old/pygerrit2-2.0.7/pygerrit2/rest/__init__.py 2018-07-13 02:25:14.000000000 +0200
+++ new/pygerrit2-2.0.9/pygerrit2/rest/__init__.py 2019-02-27 08:02:53.000000000 +0100
@@ -28,6 +28,15 @@
from .auth import HTTPBasicAuthFromNetrc
+logger = logging.getLogger("pygerrit2")
+fmt = "%(asctime)s-[%(name)s-%(levelname)s] %(message)s"
+datefmt = "[%y-%m-%d %H:%M:%S]"
+sh = logging.StreamHandler()
+sh.setLevel(logging.WARNING)
+sh.setFormatter(logging.Formatter(fmt, datefmt))
+if not logger.handlers:
+ logger.addHandler(sh)
+
GERRIT_MAGIC_JSON_PREFIX = ")]}\'\n"
GERRIT_AUTH_SUFFIX = "/a"
DEFAULT_HEADERS = {'Accept': 'application/json',
@@ -45,11 +54,16 @@
requests.HTTPError if the response contains an HTTP error status code.
"""
+ content_type = response.headers.get('content-type', '')
+ logger.debug("status[%s] content_type[%s] encoding[%s]" %
+ (response.status_code, content_type, response.encoding))
+ response.raise_for_status()
content = response.content.strip()
if response.encoding:
content = content.decode(response.encoding)
- response.raise_for_status()
- content_type = response.headers.get('content-type', '')
+ if not content:
+ logger.debug("no content in response")
+ return content
if content_type.split(';')[0] != 'application/json':
return content
if content.startswith(GERRIT_MAGIC_JSON_PREFIX):
@@ -57,7 +71,7 @@
try:
return json.loads(content)
except ValueError:
- logging.error('Invalid json content: %s', content)
+ logger.error('Invalid json content: %s', content)
raise
@@ -193,7 +207,6 @@
"""
args = self.translate_kwargs(**kwargs)
- logging.warning(args)
response = self.session.post(self.make_url(endpoint), **args)
decoded_response = _decode_response(response)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/pygerrit2.egg-info/PKG-INFO new/pygerrit2-2.0.9/pygerrit2.egg-info/PKG-INFO
--- old/pygerrit2-2.0.7/pygerrit2.egg-info/PKG-INFO 2018-07-19 06:01:50.000000000 +0200
+++ new/pygerrit2-2.0.9/pygerrit2.egg-info/PKG-INFO 2019-02-28 06:27:03.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pygerrit2
-Version: 2.0.7
+Version: 2.0.9
Summary: Client library for interacting with Gerrit's REST API
Home-page: https://github.com/dpursehouse/pygerrit2
Author: David Pursehouse
@@ -15,6 +15,8 @@
.. image:: https://travis-ci.org/dpursehouse/pygerrit2.svg?branch=master
+ .. image:: https://api.dependabot.com/badges/status?host=github&repo=dpursehouse/pyger…
+
Pygerrit2 provides a simple interface for clients to interact with
`Gerrit Code Review`_ via the REST API.
@@ -43,8 +45,9 @@
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Operating System :: MacOS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/pygerrit2.egg-info/pbr.json new/pygerrit2-2.0.9/pygerrit2.egg-info/pbr.json
--- old/pygerrit2-2.0.7/pygerrit2.egg-info/pbr.json 2018-07-19 06:01:50.000000000 +0200
+++ new/pygerrit2-2.0.9/pygerrit2.egg-info/pbr.json 2019-02-28 06:27:03.000000000 +0100
@@ -1 +1 @@
-{"git_version": "556bdbb", "is_release": true}
\ No newline at end of file
+{"git_version": "3f6af04", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/pygerrit2.egg-info/requires.txt new/pygerrit2-2.0.9/pygerrit2.egg-info/requires.txt
--- old/pygerrit2-2.0.7/pygerrit2.egg-info/requires.txt 2018-07-19 06:01:50.000000000 +0200
+++ new/pygerrit2-2.0.9/pygerrit2.egg-info/requires.txt 2019-02-28 06:27:03.000000000 +0100
@@ -1,2 +1,2 @@
pbr>=0.8.0
-requests<=2.19.1,>=2.10.0
+requests>=2.20.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/requirements.txt new/pygerrit2-2.0.9/requirements.txt
--- old/pygerrit2-2.0.7/requirements.txt 2018-06-28 11:42:27.000000000 +0200
+++ new/pygerrit2-2.0.9/requirements.txt 2018-11-03 01:14:10.000000000 +0100
@@ -1,2 +1,2 @@
pbr>=0.8.0
-requests>=2.10.0,<=2.19.1
+requests>=2.20.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygerrit2-2.0.7/setup.cfg new/pygerrit2-2.0.9/setup.cfg
--- old/pygerrit2-2.0.7/setup.cfg 2018-07-19 06:01:50.000000000 +0200
+++ new/pygerrit2-2.0.9/setup.cfg 2019-02-28 06:27:04.000000000 +0100
@@ -16,8 +16,9 @@
License :: OSI Approved :: MIT License
Natural Language :: English
Programming Language :: Python
- Programming Language :: Python :: 2.7
+ Programming Language :: Python :: 3.5
Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
Operating System :: POSIX
Operating System :: Unix
Operating System :: MacOS
1
0
Hello community,
here is the log from the commit of package python-PyMuPDF for openSUSE:Factory checked in at 2019-05-24 11:31:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-PyMuPDF (Old)
and /work/SRC/openSUSE:Factory/.python-PyMuPDF.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-PyMuPDF"
Fri May 24 11:31:55 2019 rev:2 rq:704956 version:1.14.15
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-PyMuPDF/python-PyMuPDF.changes 2019-05-22 10:57:53.446911903 +0200
+++ /work/SRC/openSUSE:Factory/.python-PyMuPDF.new.5148/python-PyMuPDF.changes 2019-05-24 11:31:57.805397528 +0200
@@ -1,0 +2,8 @@
+Thu May 23 07:28:09 UTC 2019 - Yunhe Guo <i(a)guoyunhe.me>
+
+- Version 1.14.15
+ * Fix utils.updateRect exception
+ * Draw a shape without outlines
+ * Fix Line cap and Line join
+
+-------------------------------------------------------------------
Old:
----
PyMuPDF-1.14.14.tar.gz
New:
----
PyMuPDF-1.14.15.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-PyMuPDF.spec ++++++
--- /var/tmp/diff_new_pack.kV2oqT/_old 2019-05-24 11:31:58.473397356 +0200
+++ /var/tmp/diff_new_pack.kV2oqT/_new 2019-05-24 11:31:58.481397354 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define pypi_name PyMuPDF
Name: python-%{pypi_name}
-Version: 1.14.14
+Version: 1.14.15
Release: 0
Summary: Python binding for MuPDF - a lightweight PDF and XPS viewer
License: GPL-3.0-only AND AGPL-3.0-only
++++++ PyMuPDF-1.14.14.tar.gz -> PyMuPDF-1.14.15.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-PyMuPDF/PyMuPDF-1.14.14.tar.gz /work/SRC/openSUSE:Factory/.python-PyMuPDF.new.5148/PyMuPDF-1.14.15.tar.gz differ: char 40, line 1
1
0
Hello community,
here is the log from the commit of package python-croniter for openSUSE:Factory checked in at 2019-05-24 11:31:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-croniter (Old)
and /work/SRC/openSUSE:Factory/.python-croniter.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-croniter"
Fri May 24 11:31:52 2019 rev:10 rq:704955 version:0.3.30
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-croniter/python-croniter.changes 2019-03-28 22:48:28.095057115 +0100
+++ /work/SRC/openSUSE:Factory/.python-croniter.new.5148/python-croniter.changes 2019-05-24 11:31:54.101398482 +0200
@@ -1,0 +2,9 @@
+Thu May 23 06:36:54 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 0.3.30
+ * credits
+ * history stripping (security)
+ * Handle -Sun notation
+ * Handle invalid ranges correctly
+
+-------------------------------------------------------------------
Old:
----
croniter-0.3.28.tar.gz
New:
----
croniter-0.3.30.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-croniter.spec ++++++
--- /var/tmp/diff_new_pack.XsmByi/_old 2019-05-24 11:31:54.681398333 +0200
+++ /var/tmp/diff_new_pack.XsmByi/_new 2019-05-24 11:31:54.681398333 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-croniter
-Version: 0.3.28
+Version: 0.3.30
Release: 0
Summary: Python iterators for datetime objects with cron-like format
License: MIT
++++++ croniter-0.3.28.tar.gz -> croniter-0.3.30.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/croniter-0.3.28/PKG-INFO new/croniter-0.3.30/PKG-INFO
--- old/croniter-0.3.28/PKG-INFO 2019-03-19 16:30:33.000000000 +0100
+++ new/croniter-0.3.30/PKG-INFO 2019-04-20 17:44:33.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: croniter
-Version: 0.3.28
+Version: 0.3.30
Summary: croniter provides iteration for datetime object with cron like format
Home-page: http://github.com/kiorky/croniter
Author: Matsumoto Taichi, kiorky
@@ -31,11 +31,6 @@
:target: https://travis-ci.org/kiorky/croniter
-
- Support development
- ====================
- - `paypal <https://paypal.me/kiorky>`_
-
Usage
============
@@ -130,7 +125,7 @@
. venv/bin/activate
pip install --upgrade -r requirements/release.txt
- fullrelease
+ ./release.sh
Contributors
@@ -154,25 +149,23 @@
Changelog
==============
- 0.3.28 (2019-03-19)
+ 0.3.30 (2019-04-20)
-------------------
- credits
- 0.3.27 (2019-01-27)
+
+ 0.3.29 (2019-03-26)
-------------------
+
+ - credits
+ - history stripping (security)
- Handle -Sun notation, This fixes `#119 <https://github.com/taichino/croniter/issues/119>`_.
[kiorky]
- Handle invalid ranges correctly, This fixes `#114 <https://github.com/taichino/croniter/issues/114>`_.
[kiorky]
- 0.3.26 (2018-11-03)
- -------------------
-
- - Support
-
-
0.3.25 (2018-08-07)
-------------------
- Pypi hygiene
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/croniter-0.3.28/README.rst new/croniter-0.3.30/README.rst
--- old/croniter-0.3.28/README.rst 2019-03-19 16:30:32.000000000 +0100
+++ new/croniter-0.3.30/README.rst 2019-04-20 17:44:33.000000000 +0200
@@ -23,11 +23,6 @@
:target: https://travis-ci.org/kiorky/croniter
-
-Support development
-====================
-- `paypal <https://paypal.me/kiorky>`_
-
Usage
============
@@ -122,7 +117,7 @@
. venv/bin/activate
pip install --upgrade -r requirements/release.txt
- fullrelease
+ ./release.sh
Contributors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/croniter-0.3.28/docs/CHANGES.rst new/croniter-0.3.30/docs/CHANGES.rst
--- old/croniter-0.3.28/docs/CHANGES.rst 2019-03-19 16:30:32.000000000 +0100
+++ new/croniter-0.3.30/docs/CHANGES.rst 2019-04-20 17:44:33.000000000 +0200
@@ -1,25 +1,23 @@
Changelog
==============
-0.3.28 (2019-03-19)
+0.3.30 (2019-04-20)
-------------------
- credits
-0.3.27 (2019-01-27)
+
+0.3.29 (2019-03-26)
-------------------
+
+- credits
+- history stripping (security)
- Handle -Sun notation, This fixes `#119 <https://github.com/taichino/croniter/issues/119>`_.
[kiorky]
- Handle invalid ranges correctly, This fixes `#114 <https://github.com/taichino/croniter/issues/114>`_.
[kiorky]
-0.3.26 (2018-11-03)
--------------------
-
-- Support
-
-
0.3.25 (2018-08-07)
-------------------
- Pypi hygiene
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/croniter-0.3.28/setup.py new/croniter-0.3.30/setup.py
--- old/croniter-0.3.28/setup.py 2019-03-19 16:30:32.000000000 +0100
+++ new/croniter-0.3.30/setup.py 2019-04-20 17:44:33.000000000 +0200
@@ -23,7 +23,7 @@
setup(
name='croniter',
- version='0.3.28',
+ version='0.3.30',
py_modules=['croniter', ],
description=(
'croniter provides iteration for datetime '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/croniter-0.3.28/src/croniter.egg-info/PKG-INFO new/croniter-0.3.30/src/croniter.egg-info/PKG-INFO
--- old/croniter-0.3.28/src/croniter.egg-info/PKG-INFO 2019-03-19 16:30:32.000000000 +0100
+++ new/croniter-0.3.30/src/croniter.egg-info/PKG-INFO 2019-04-20 17:44:33.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: croniter
-Version: 0.3.28
+Version: 0.3.30
Summary: croniter provides iteration for datetime object with cron like format
Home-page: http://github.com/kiorky/croniter
Author: Matsumoto Taichi, kiorky
@@ -31,11 +31,6 @@
:target: https://travis-ci.org/kiorky/croniter
-
- Support development
- ====================
- - `paypal <https://paypal.me/kiorky>`_
-
Usage
============
@@ -130,7 +125,7 @@
. venv/bin/activate
pip install --upgrade -r requirements/release.txt
- fullrelease
+ ./release.sh
Contributors
@@ -154,25 +149,23 @@
Changelog
==============
- 0.3.28 (2019-03-19)
+ 0.3.30 (2019-04-20)
-------------------
- credits
- 0.3.27 (2019-01-27)
+
+ 0.3.29 (2019-03-26)
-------------------
+
+ - credits
+ - history stripping (security)
- Handle -Sun notation, This fixes `#119 <https://github.com/taichino/croniter/issues/119>`_.
[kiorky]
- Handle invalid ranges correctly, This fixes `#114 <https://github.com/taichino/croniter/issues/114>`_.
[kiorky]
- 0.3.26 (2018-11-03)
- -------------------
-
- - Support
-
-
0.3.25 (2018-08-07)
-------------------
- Pypi hygiene
1
0
Hello community,
here is the log from the commit of package python-fusepy for openSUSE:Factory checked in at 2019-05-24 11:31:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-fusepy (Old)
and /work/SRC/openSUSE:Factory/.python-fusepy.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-fusepy"
Fri May 24 11:31:48 2019 rev:2 rq:704953 version:3.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-fusepy/python-fusepy.changes 2017-12-23 12:20:02.241971383 +0100
+++ /work/SRC/openSUSE:Factory/.python-fusepy.new.5148/python-fusepy.changes 2019-05-24 11:31:51.161399240 +0200
@@ -1,0 +2,6 @@
+Thu May 23 07:01:47 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 3.0.1
+ * no upstream changelog
+
+-------------------------------------------------------------------
Old:
----
v2.0.4.tar.gz
New:
----
fusepy-3.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-fusepy.spec ++++++
--- /var/tmp/diff_new_pack.nUWpqU/_old 2019-05-24 11:31:51.705399099 +0200
+++ /var/tmp/diff_new_pack.nUWpqU/_new 2019-05-24 11:31:51.709399099 +0200
@@ -1,7 +1,7 @@
#
-# spec file for package fusepy
+# spec file for package python-fusepy
#
-# Copyright (c) 2017 SUSE LINUX Products 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
@@ -11,25 +11,24 @@
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
-#
-# compatibility for older SUSE versions that aren't fit for python single-spec
-# yet
+
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-fusepy
-Version: 2.0.4
+Version: 3.0.1
Release: 0
-License: ISC
Summary: A python module that provides a simple interface to FUSE
-Url: https://github.com/terencehonles/fusepy
+License: ISC
Group: Development/Libraries/Python
-Source: https://github.com/terencehonles/fusepy/archive/v%{version}.tar.gz
+Url: https://github.com/terencehonles/fusepy
+Source: https://files.pythonhosted.org/packages/source/f/fusepy/fusepy-%{version}.t…
+BuildRequires: %{python_module setuptools}
BuildRequires: fuse-devel
BuildRequires: pkg-config
-BuildRequires: %{python_module setuptools}
# required for older SUSE versions w/o python single-spec support
BuildRequires: python-rpm-macros
# fusepy interfaces via ctypes to libfuse, so no arch dependent elements
@@ -54,6 +53,9 @@
%install
%python_install
+%check
+# no upstream tests
+
%files %{python_files}
%defattr(-,root,root)
%{python_sitelib}/*
1
0
Hello community,
here is the log from the commit of package lector for openSUSE:Factory checked in at 2019-05-24 11:31:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lector (Old)
and /work/SRC/openSUSE:Factory/.lector.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lector"
Fri May 24 11:31:46 2019 rev:3 rq:704927 version:0.5.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/lector/lector.changes 2019-03-11 11:16:00.177326618 +0100
+++ /work/SRC/openSUSE:Factory/.lector.new.5148/lector.changes 2019-05-24 11:31:47.677400136 +0200
@@ -1,0 +2,5 @@
+Thu May 23 07:38:04 UTC 2019 - Yunhe Guo <i(a)guoyunhe.me>
+
+- Add python3-PyMuPDF as recommends
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ lector.spec ++++++
--- /var/tmp/diff_new_pack.z3sH2a/_old 2019-05-24 11:31:48.353399962 +0200
+++ /var/tmp/diff_new_pack.z3sH2a/_new 2019-05-24 11:31:48.357399961 +0200
@@ -38,6 +38,7 @@
Requires: python3-qt5
Requires: python3-xmltodict
Recommends: python3-poppler-qt5
+Recommends: python3-PyMuPDF
BuildArch: noarch
%description
1
0
Hello community,
here is the log from the commit of package dstat for openSUSE:Factory checked in at 2019-05-24 11:31:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dstat (Old)
and /work/SRC/openSUSE:Factory/.dstat.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dstat"
Fri May 24 11:31:39 2019 rev:7 rq:704919 version:0.7.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/dstat/dstat.changes 2017-12-14 11:03:14.898916516 +0100
+++ /work/SRC/openSUSE:Factory/.dstat.new.5148/dstat.changes 2019-05-24 11:31:44.465400964 +0200
@@ -1,0 +2,17 @@
+Thu May 23 06:22:26 UTC 2019 - mvetter(a)suse.com
+
+- Update to 0.7.4:
+ * Add plugin to show interface statistics for infiniband and RoCE adapters
+ * Make lustre plugin actually work
+ * Add generic thermal zone support
+ * Add MongoDB plugin
+ * Fix header updates when using --noupdate
+ * Change order of scripted commands to group version-specific output
+ * Replace dict keys() method with in-operator
+ * Add jvm heap monitor
+ * Avoid escape characters when --nocolor
+ * Add Python 3 support
+- Move sources from python3 fork (https://github.com/eshizhan/dstat)
+ back to official sources which now also have python3 support
+
+-------------------------------------------------------------------
Old:
----
0.7.3py3.tar.gz
New:
----
v0.7.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dstat.spec ++++++
--- /var/tmp/diff_new_pack.2XfhK4/_old 2019-05-24 11:31:45.521400692 +0200
+++ /var/tmp/diff_new_pack.2XfhK4/_new 2019-05-24 11:31:45.525400691 +0200
@@ -1,7 +1,7 @@
#
# spec file for package dstat
#
-# 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
@@ -17,14 +17,13 @@
Name: dstat
-Version: 0.7.3
+Version: 0.7.4
Release: 0
Summary: Versatile vmstat, iostat and ifstat Replacement
-License: GPL-2.0
+License: GPL-2.0-only
Group: System/Monitoring
Url: http://dag.wieers.com/home-made/dstat/
-#Source: https://github.com/dagwieers/dstat/archive/#{version}.tar.gz
-Source: https://github.com/eshizhan/dstat/archive/%{version}py3.tar.gz
+Source: https://github.com/dagwieers/dstat/archive/v%{version}.tar.gz
Source1: dstat.desktop
BuildRequires: make
Requires: python3
@@ -51,7 +50,7 @@
confusion, less mistakes.
%prep
-%setup -q -n %{name}-%{version}py3
+%setup -q
# repalce env by python
sed -i 's/#!\/usr\/bin\/env python/#!\/usr\/bin\/python3/' dstat
1
0
Hello community,
here is the log from the commit of package swayidle for openSUSE:Factory checked in at 2019-05-24 11:31:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/swayidle (Old)
and /work/SRC/openSUSE:Factory/.swayidle.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "swayidle"
Fri May 24 11:31:37 2019 rev:2 rq:704917 version:1.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/swayidle/swayidle.changes 2019-02-25 17:50:47.106771824 +0100
+++ /work/SRC/openSUSE:Factory/.swayidle.new.5148/swayidle.changes 2019-05-24 11:31:39.813402162 +0200
@@ -1,0 +2,9 @@
+Thu May 23 06:13:01 UTC 2019 - mvetter(a)suse.com
+
+- Update to 1.3:
+ * Add an error message when before-sleep is used without dbus support
+ * Add support for logind's lock/unlock signals
+ * Set version in project file
+- Add swayidle-version.patch: they forgot to increase the version
+
+-------------------------------------------------------------------
Old:
----
1.2.tar.gz
New:
----
1.3.tar.gz
swayidle-version.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ swayidle.spec ++++++
--- /var/tmp/diff_new_pack.Nd9cIF/_old 2019-05-24 11:31:41.101401831 +0200
+++ /var/tmp/diff_new_pack.Nd9cIF/_new 2019-05-24 11:31:41.109401828 +0200
@@ -12,18 +12,19 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: swayidle
-Version: 1.2
+Version: 1.3
Release: 0
Summary: Idle management daemon for Wayland
License: MIT
Group: System/GUI/Other
URL: https://github.com/swaywm/swayidle
Source0: https://github.com/swaywm/swayidle/archive/%{version}.tar.gz
+Patch0: swayidle-version.patch
BuildRequires: meson >= 0.48.0
BuildRequires: pkgconfig
BuildRequires: scdoc
@@ -67,6 +68,7 @@
%prep
%setup -q
+%patch0 -p1
%build
export CFLAGS="%{optflags} -I/usr/include/wayland"
++++++ 1.2.tar.gz -> 1.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/swayidle-1.2/main.c new/swayidle-1.3/main.c
--- old/swayidle-1.2/main.c 2019-01-27 14:22:09.000000000 +0100
+++ new/swayidle-1.3/main.c 2019-02-16 17:43:36.000000000 +0100
@@ -33,6 +33,8 @@
struct wl_list timeout_cmds; // struct swayidle_timeout_cmd *
char *before_sleep_cmd;
char *after_resume_cmd;
+ char *logind_lock_cmd;
+ char *logind_unlock_cmd;
bool wait;
} state;
@@ -109,6 +111,7 @@
#if HAVE_SYSTEMD || HAVE_ELOGIND
static int lock_fd = -1;
static struct sd_bus *bus = NULL;
+static char *session_name = NULL;
static void acquire_sleep_lock(void) {
sd_bus_message *msg = NULL;
@@ -178,6 +181,29 @@
return 0;
}
+static int handle_lock(sd_bus_message *msg, void *userdata,
+ sd_bus_error *ret_error) {
+ swayidle_log(LOG_DEBUG, "Lock signal received");
+
+ if (state.logind_lock_cmd) {
+ cmd_exec(state.logind_lock_cmd);
+ }
+ swayidle_log(LOG_DEBUG, "Lock command done");
+
+ return 0;
+}
+
+static int handle_unlock(sd_bus_message *msg, void *userdata,
+ sd_bus_error *ret_error) {
+ swayidle_log(LOG_DEBUG, "Unlock signal received");
+
+ if (state.logind_unlock_cmd) {
+ cmd_exec(state.logind_unlock_cmd);
+ }
+ swayidle_log(LOG_DEBUG, "Unlock command done");
+
+ return 0;
+}
static int dbus_event(int fd, uint32_t mask, void *data) {
sd_bus *bus = data;
@@ -205,27 +231,74 @@
return count;
}
-static void setup_sleep_listener(void) {
+static void connect_to_bus(void) {
int ret = sd_bus_default_system(&bus);
+ sd_bus_message *msg = NULL;
+ sd_bus_error error = SD_BUS_ERROR_NULL;
+ pid_t my_pid = getpid();
+ const char *session_name_tmp;
if (ret < 0) {
errno = -ret;
swayidle_log_errno(LOG_ERROR, "Failed to open D-Bus connection");
return;
}
+ struct wl_event_source *source = wl_event_loop_add_fd(state.event_loop,
+ sd_bus_get_fd(bus), WL_EVENT_READABLE, dbus_event, bus);
+ wl_event_source_check(source);
+ ret = sd_bus_call_method(bus, "org.freedesktop.login1",
+ "/org/freedesktop/login1",
+ "org.freedesktop.login1.Manager", "GetSessionByPID",
+ &error, &msg, "u", my_pid);
+ if (ret < 0) {
+ swayidle_log(LOG_ERROR,
+ "Failed to find session name: %s", error.message);
+ goto cleanup;
+ }
+
+ ret = sd_bus_message_read(msg, "o", &session_name_tmp);
+ if (ret < 0) {
+ swayidle_log(LOG_ERROR,
+ "Failed to read session name\n");
+ goto cleanup;
+ }
+ session_name = strdup(session_name_tmp);
+cleanup:
+ sd_bus_error_free(&error);
+ sd_bus_message_unref(msg);
+}
- ret = sd_bus_match_signal(bus, NULL, "org.freedesktop.login1",
+static void setup_sleep_listener(void) {
+ int ret = sd_bus_match_signal(bus, NULL, "org.freedesktop.login1",
"/org/freedesktop/login1", "org.freedesktop.login1.Manager",
"PrepareForSleep", prepare_for_sleep, NULL);
if (ret < 0) {
errno = -ret;
- swayidle_log_errno(LOG_ERROR, "Failed to add D-Bus signal match");
+ swayidle_log_errno(LOG_ERROR, "Failed to add D-Bus signal match : sleep");
return;
}
acquire_sleep_lock();
+}
- struct wl_event_source *source = wl_event_loop_add_fd(state.event_loop,
- sd_bus_get_fd(bus), WL_EVENT_READABLE, dbus_event, bus);
- wl_event_source_check(source);
+static void setup_lock_listener(void) {
+ int ret = sd_bus_match_signal(bus, NULL, "org.freedesktop.login1",
+ session_name, "org.freedesktop.login1.Session",
+ "Lock", handle_lock, NULL);
+ if (ret < 0) {
+ errno = -ret;
+ swayidle_log_errno(LOG_ERROR, "Failed to add D-Bus signal match : lock");
+ return;
+ }
+}
+
+static void setup_unlock_listener(void) {
+ int ret = sd_bus_match_signal(bus, NULL, "org.freedesktop.login1",
+ session_name, "org.freedesktop.login1.Session",
+ "Unlock", handle_unlock, NULL);
+ if (ret < 0) {
+ errno = -ret;
+ swayidle_log_errno(LOG_ERROR, "Failed to add D-Bus signal match : unlock");
+ return;
+ }
}
#endif
@@ -342,6 +415,11 @@
}
static int parse_sleep(int argc, char **argv) {
+#if !HAVE_SYSTEMD && !HAVE_ELOGIND
+ swayidle_log(LOG_ERROR, "before-sleep not supported: swayidle was compiled "
+ "with neither systemd nor elogind support.");
+ exit(-1);
+#endif
if (argc < 2) {
swayidle_log(LOG_ERROR, "Too few parameters to before-sleep command. "
"Usage: before-sleep <command>");
@@ -357,6 +435,11 @@
}
static int parse_resume(int argc, char **argv) {
+#if !HAVE_SYSTEMD && !HAVE_ELOGIND
+ swayidle_log(LOG_ERROR, "after-resume not supported: swayidle was compiled "
+ "with neither systemd nor elogind support.");
+ exit(-1);
+#endif
if (argc < 2) {
swayidle_log(LOG_ERROR, "Too few parameters to after-resume command. "
"Usage: after-resume <command>");
@@ -371,6 +454,46 @@
return 2;
}
+static int parse_lock(int argc, char **argv) {
+#if !HAVE_SYSTEMD && !HAVE_ELOGIND
+ swayidle_log(LOG_ERROR, "lock not supported: swayidle was compiled"
+ " with neither systemd nor elogind support.");
+ exit(-1);
+#endif
+ if (argc < 2) {
+ swayidle_log(LOG_ERROR, "Too few parameters to lock command. "
+ "Usage: lock <command>");
+ exit(-1);
+ }
+
+ state.logind_lock_cmd = parse_command(argc - 1, &argv[1]);
+ if (state.logind_lock_cmd) {
+ swayidle_log(LOG_DEBUG, "Setup lock hook: %s", state.logind_lock_cmd);
+ }
+
+ return 2;
+}
+
+static int parse_unlock(int argc, char **argv) {
+#if !HAVE_SYSTEMD && !HAVE_ELOGIND
+ swayidle_log(LOG_ERROR, "unlock not supported: swayidle was compiled"
+ " with neither systemd nor elogind support.");
+ exit(-1);
+#endif
+ if (argc < 2) {
+ swayidle_log(LOG_ERROR, "Too few parameters to unlock command. "
+ "Usage: unlock <command>");
+ exit(-1);
+ }
+
+ state.logind_unlock_cmd = parse_command(argc - 1, &argv[1]);
+ if (state.logind_unlock_cmd) {
+ swayidle_log(LOG_DEBUG, "Setup unlock hook: %s", state.logind_unlock_cmd);
+ }
+
+ return 2;
+}
+
static int parse_args(int argc, char *argv[]) {
int c;
while ((c = getopt(argc, argv, "hdw")) != -1) {
@@ -406,6 +529,12 @@
} else if (!strcmp("after-resume", argv[i])) {
swayidle_log(LOG_DEBUG, "Got after-resume");
i += parse_resume(argc - i, &argv[i]);
+ } else if (!strcmp("lock", argv[i])) {
+ swayidle_log(LOG_DEBUG, "Got lock");
+ i += parse_lock(argc - i, &argv[i]);
+ } else if (!strcmp("unlock", argv[i])) {
+ swayidle_log(LOG_DEBUG, "Got unlock");
+ i += parse_unlock(argc - i, &argv[i]);
} else {
swayidle_log(LOG_ERROR, "Unsupported command '%s'", argv[i]);
return 1;
@@ -491,10 +620,19 @@
bool should_run = !wl_list_empty(&state.timeout_cmds);
#if HAVE_SYSTEMD || HAVE_ELOGIND
+ connect_to_bus();
if (state.before_sleep_cmd || state.after_resume_cmd) {
should_run = true;
setup_sleep_listener();
}
+ if (state.logind_lock_cmd) {
+ should_run = true;
+ setup_lock_listener();
+ }
+ if (state.logind_unlock_cmd) {
+ should_run = true;
+ setup_unlock_listener();
+ }
#endif
if (!should_run) {
swayidle_log(LOG_INFO, "No command specified! Nothing to do, will exit");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/swayidle-1.2/meson.build new/swayidle-1.3/meson.build
--- old/swayidle-1.2/meson.build 2019-01-27 14:22:09.000000000 +0100
+++ new/swayidle-1.3/meson.build 2019-02-16 17:43:36.000000000 +0100
@@ -1,6 +1,7 @@
project(
'swayidle',
'c',
+ version: '1.2',
license: 'MIT',
meson_version: '>=0.48.0',
default_options: [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/swayidle-1.2/swayidle.1.scd new/swayidle-1.3/swayidle.1.scd
--- old/swayidle-1.2/swayidle.1.scd 2019-01-27 14:22:09.000000000 +0100
+++ new/swayidle-1.3/swayidle.1.scd 2019-02-16 17:43:36.000000000 +0100
@@ -50,6 +50,14 @@
If built with systemd support, executes _command_ after logind signals that the
computer resumed from sleep.
+*lock* <command>
+ If built with systemd support, executes _command_ when logind signals that the
+ session should be locked
+
+*unlock* <command>
+ If built with systemd support, executes _command_ when logind signals that the
+ session should be unlocked
+
All commands are executed in a shell.
# EXAMPLE
@@ -77,4 +85,4 @@
# SEE ALSO
-*sway*(5) *swaymsg*(1) *sway-input*(5) *sway-output*(5) *sway-bar*(5)
+*sway*(5) *swaymsg*(1) *sway-input*(5) *sway-output*(5) *sway-bar*(5) *loginctl*(1)
++++++ swayidle-version.patch ++++++
diff -urEbw swayidle-1.3/meson.build swayidle-1.3.new/meson.build
--- swayidle-1.3/meson.build 2019-02-16 17:43:36.000000000 +0100
+++ swayidle-1.3.new/meson.build 2019-05-23 08:14:03.661720253 +0200
@@ -1,7 +1,7 @@
project(
'swayidle',
'c',
- version: '1.2',
+ version: '1.3',
license: 'MIT',
meson_version: '>=0.48.0',
default_options: [
1
0
Hello community,
here is the log from the commit of package swaylock for openSUSE:Factory checked in at 2019-05-24 11:31:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/swaylock (Old)
and /work/SRC/openSUSE:Factory/.swaylock.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "swaylock"
Fri May 24 11:31:35 2019 rev:2 rq:704916 version:1.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/swaylock/swaylock.changes 2019-02-25 18:00:56.614102553 +0100
+++ /work/SRC/openSUSE:Factory/.swaylock.new.5148/swaylock.changes 2019-05-24 11:31:38.661402459 +0200
@@ -1,0 +2,17 @@
+Thu May 23 06:07:09 UTC 2019 - mvetter(a)suse.com
+
+- Update to 1.4:
+ * Decouple the drawing of the background from drawing the indicator.
+ * Allow spaces in image file path
+ * Display xkb layout while typing
+ * Submit password by pressing Ctrl+m (close #75)
+ * Fix lock indicator position on hidpi screens.
+ * Do not exit if no outputs are present
+ * Fix minor typo in man page
+ * Set version in project file
+ * Added hide keyboard layout option
+ * Described hide-keyboard-layout option in swaylock.1.scd
+ * Fix --version when building from tarball
+- Update swaylock-version.patch
+
+-------------------------------------------------------------------
Old:
----
1.3.tar.gz
New:
----
1.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ swaylock.spec ++++++
--- /var/tmp/diff_new_pack.0Yrb3W/_old 2019-05-24 11:31:39.489402245 +0200
+++ /var/tmp/diff_new_pack.0Yrb3W/_new 2019-05-24 11:31:39.493402244 +0200
@@ -12,12 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: swaylock
-Version: 1.3
+Version: 1.4
Release: 0
Summary: Screen locker for Wayland
License: MIT
@@ -26,6 +26,7 @@
Source0: https://github.com/swaywm/swaylock/archive/%{version}.tar.gz
Patch0: swaylock-version.patch
BuildRequires: meson >= 0.48.0
+BuildRequires: pam-devel
BuildRequires: pkgconfig
BuildRequires: scdoc
BuildRequires: pkgconfig(cairo)
@@ -33,7 +34,6 @@
BuildRequires: pkgconfig(wayland-client)
BuildRequires: pkgconfig(wayland-protocols) >= 1.14
BuildRequires: pkgconfig(xkbcommon)
-BuildRequires: pam-devel
Suggests: %{name}-bash-completion
Suggests: %{name}-fish-completion
Suggests: %{name}-zsh-completion
++++++ 1.3.tar.gz -> 1.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/swaylock-1.3/include/swaylock.h new/swaylock-1.4/include/swaylock.h
--- old/swaylock-1.3/include/swaylock.h 2019-01-29 20:48:00.000000000 +0100
+++ new/swaylock-1.4/include/swaylock.h 2019-04-29 16:37:47.000000000 +0200
@@ -34,6 +34,9 @@
uint32_t caps_lock_bs_highlight;
uint32_t caps_lock_key_highlight;
uint32_t separator;
+ uint32_t layout_background;
+ uint32_t layout_border;
+ uint32_t layout_text;
struct swaylock_colorset inside;
struct swaylock_colorset line;
struct swaylock_colorset ring;
@@ -50,6 +53,8 @@
bool show_indicator;
bool show_caps_lock_text;
bool show_caps_lock_indicator;
+ bool show_keyboard_layout;
+ bool hide_keyboard_layout;
bool show_failed_attempts;
bool daemonize;
};
@@ -65,6 +70,7 @@
struct loop_timer *clear_password_timer; // clears the password buffer
struct wl_display *display;
struct wl_compositor *compositor;
+ struct wl_subcompositor *subcompositor;
struct zwlr_layer_shell_v1 *layer_shell;
struct zwlr_input_inhibit_manager_v1 *input_inhibit_manager;
struct wl_shm *shm;
@@ -86,8 +92,11 @@
uint32_t output_global_name;
struct zxdg_output_v1 *xdg_output;
struct wl_surface *surface;
+ struct wl_surface *child; // surface made into subsurface
+ struct wl_subsurface *subsurface;
struct zwlr_layer_surface_v1 *layer_surface;
struct pool_buffer buffers[2];
+ struct pool_buffer indicator_buffers[2];
struct pool_buffer *current_buffer;
bool frame_pending, dirty;
uint32_t width, height;
@@ -107,6 +116,7 @@
void swaylock_handle_key(struct swaylock_state *state,
xkb_keysym_t keysym, uint32_t codepoint);
+void render_frame_background(struct swaylock_surface *surface);
void render_frame(struct swaylock_surface *surface);
void render_frames(struct swaylock_state *state);
void damage_surface(struct swaylock_surface *surface);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/swaylock-1.3/main.c new/swaylock-1.4/main.c
--- old/swaylock-1.3/main.c 2019-01-29 20:48:00.000000000 +0100
+++ new/swaylock-1.4/main.c 2019-04-29 16:37:47.000000000 +0200
@@ -126,6 +126,12 @@
surface->surface = wl_compositor_create_surface(state->compositor);
assert(surface->surface);
+ surface->child = wl_compositor_create_surface(state->compositor);
+ assert(surface->child);
+ surface->subsurface = wl_subcompositor_get_subsurface(state->subcompositor, surface->child, surface->surface);
+ assert(surface->subsurface);
+ wl_subsurface_set_sync(surface->subsurface);
+
surface->layer_surface = zwlr_layer_shell_v1_get_layer_surface(
state->layer_shell, surface->surface, surface->output,
ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY, "lockscreen");
@@ -163,6 +169,7 @@
surface->width = width;
surface->height = height;
zwlr_layer_surface_v1_ack_configure(layer_surface, serial);
+ render_frame_background(surface);
render_frame(surface);
}
@@ -297,6 +304,9 @@
if (strcmp(interface, wl_compositor_interface.name) == 0) {
state->compositor = wl_registry_bind(registry, name,
&wl_compositor_interface, 3);
+ } else if (strcmp(interface, wl_subcompositor_interface.name) == 0) {
+ state->subcompositor = wl_registry_bind(registry, name,
+ &wl_subcompositor_interface, 1);
} else if (strcmp(interface, wl_shm_interface.name) == 0) {
state->shm = wl_registry_bind(registry, name,
&wl_shm_interface, 1);
@@ -364,6 +374,23 @@
return default_image;
}
+static char *join_args(char **argv, int argc) {
+ assert(argc > 0);
+ int len = 0, i;
+ for (i = 0; i < argc; ++i) {
+ len += strlen(argv[i]) + 1;
+ }
+ char *res = malloc(len);
+ len = 0;
+ for (i = 0; i < argc; ++i) {
+ strcpy(res + len, argv[i]);
+ len += strlen(argv[i]);
+ res[len++] = ' ';
+ }
+ res[len - 1] = '\0';
+ return res;
+}
+
static void load_image(char *arg, struct swaylock_state *state) {
// [[<output>]:]<path>
struct swaylock_image *image = calloc(1, sizeof(struct swaylock_image));
@@ -397,11 +424,19 @@
}
}
- // Bash doesn't replace the ~ with $HOME if the output name is supplied
+ // The shell will not expand ~ to the value of $HOME when an output name is
+ // given. Also, any image paths given in the config file need to have shell
+ // expansions performed
wordexp_t p;
+ while (strstr(image->path, " ")) {
+ image->path = realloc(image->path, strlen(image->path) + 2);
+ char *ptr = strstr(image->path, " ") + 1;
+ memmove(ptr + 1, ptr, strlen(ptr) + 1);
+ *ptr = '\\';
+ }
if (wordexp(image->path, &p, 0) == 0) {
free(image->path);
- image->path = strdup(p.we_wordv[0]);
+ image->path = join_args(p.we_wordv, p.we_wordc);
wordfree(&p);
}
@@ -423,6 +458,9 @@
colors->caps_lock_bs_highlight = 0xDB3300FF;
colors->caps_lock_key_highlight = 0x33DB00FF;
colors->separator = 0x000000FF;
+ colors->layout_background = 0x000000C0;
+ colors->layout_border = 0x00000000;
+ colors->layout_text = 0xFFFFFFFF;
colors->inside = (struct swaylock_colorset){
.input = 0x000000C0,
.cleared = 0xE5A445C0,
@@ -474,6 +512,9 @@
LO_INSIDE_VER_COLOR,
LO_INSIDE_WRONG_COLOR,
LO_KEY_HL_COLOR,
+ LO_LAYOUT_TXT_COLOR,
+ LO_LAYOUT_BG_COLOR,
+ LO_LAYOUT_BORDER_COLOR,
LO_LINE_COLOR,
LO_LINE_CLEAR_COLOR,
LO_LINE_CAPS_LOCK_COLOR,
@@ -508,6 +549,8 @@
{"scaling", required_argument, NULL, 's'},
{"tiling", no_argument, NULL, 't'},
{"no-unlock-indicator", no_argument, NULL, 'u'},
+ {"show-keyboard-layout", no_argument, NULL, 'k'},
+ {"hide-keyboard-layout", no_argument, NULL, 'K'},
{"show-failed-attempts", no_argument, NULL, 'F'},
{"version", no_argument, NULL, 'v'},
{"bs-hl-color", required_argument, NULL, LO_BS_HL_COLOR},
@@ -522,6 +565,9 @@
{"inside-ver-color", required_argument, NULL, LO_INSIDE_VER_COLOR},
{"inside-wrong-color", required_argument, NULL, LO_INSIDE_WRONG_COLOR},
{"key-hl-color", required_argument, NULL, LO_KEY_HL_COLOR},
+ {"layout-bg-color", required_argument, NULL, LO_LAYOUT_BG_COLOR},
+ {"layout-border-color", required_argument, NULL, LO_LAYOUT_BORDER_COLOR},
+ {"layout-text-color", required_argument, NULL, LO_LAYOUT_TXT_COLOR},
{"line-color", required_argument, NULL, LO_LINE_COLOR},
{"line-clear-color", required_argument, NULL, LO_LINE_CLEAR_COLOR},
{"line-caps-lock-color", required_argument, NULL, LO_LINE_CAPS_LOCK_COLOR},
@@ -552,12 +598,18 @@
"Enable debugging output.\n"
" -e, --ignore-empty-password "
"When an empty password is provided, do not validate it.\n"
+ " -F, --show-failed-attempts "
+ "Show current count of failed authentication attempts.\n"
" -f, --daemonize "
"Detach from the controlling terminal after locking.\n"
" -h, --help "
"Show help message and quit.\n"
" -i, --image [[<output>]:]<path> "
"Display the given image.\n"
+ " -k, --show-keyboard-layout "
+ "Display the current xkb layout while typing.\n"
+ " -K, --hide-keyboard-layout "
+ "Hide the current xkb layout while typing.\n"
" -L, --disable-caps-lock-text "
"Disable the Caps Lock text.\n"
" -l, --indicator-caps-lock "
@@ -568,8 +620,6 @@
"Same as --scaling=tile.\n"
" -u, --no-unlock-indicator "
"Disable the unlock indicator.\n"
- " -F, --show-failed-attempts "
- "Show current count of failed authentication attempts.\n"
" -v, --version "
"Show the version number and quit.\n"
" --bs-hl-color <color> "
@@ -599,6 +649,12 @@
"Sets the color of the inside of the indicator when invalid.\n"
" --key-hl-color <color> "
"Sets the color of the key press highlight segments.\n"
+ " --layout-bg-color <color> "
+ "Sets the background color of the box containing the layout text.\n"
+ " --layout-border-color <color> "
+ "Sets the color of the border of the box containing the layout text.\n"
+ " --layout-text-color <color> "
+ "Sets the color of the layout text.\n"
" --line-color <color> "
"Sets the color of the line between the inside and ring.\n"
" --line-clear-color <color> "
@@ -647,7 +703,7 @@
optind = 1;
while (1) {
int opt_idx = 0;
- c = getopt_long(argc, argv, "c:deFfhi:Llnrs:tuvC:", long_options,
+ c = getopt_long(argc, argv, "c:deFfhi:kKLlnrs:tuvC:", long_options,
&opt_idx);
if (c == -1) {
break;
@@ -671,6 +727,11 @@
state->args.ignore_empty = true;
}
break;
+ case 'F':
+ if (state) {
+ state->args.show_failed_attempts = true;
+ }
+ break;
case 'f':
if (state) {
state->args.daemonize = true;
@@ -681,6 +742,16 @@
load_image(optarg, state);
}
break;
+ case 'k':
+ if (state) {
+ state->args.show_keyboard_layout = true;
+ }
+ break;
+ case 'K':
+ if (state) {
+ state->args.hide_keyboard_layout = true;
+ }
+ break;
case 'L':
if (state) {
state->args.show_caps_lock_text = false;
@@ -719,11 +790,6 @@
state->args.show_indicator = false;
}
break;
- case 'F':
- if (state) {
- state->args.show_failed_attempts = true;
- }
- break;
case 'v':
fprintf(stdout, "swaylock version " SWAYLOCK_VERSION "\n");
exit(EXIT_SUCCESS);
@@ -789,6 +855,21 @@
state->args.colors.key_highlight = parse_color(optarg);
}
break;
+ case LO_LAYOUT_BG_COLOR:
+ if (state) {
+ state->args.colors.layout_background = parse_color(optarg);
+ }
+ break;
+ case LO_LAYOUT_BORDER_COLOR:
+ if (state) {
+ state->args.colors.layout_border = parse_color(optarg);
+ }
+ break;
+ case LO_LAYOUT_TXT_COLOR:
+ if (state) {
+ state->args.colors.layout_text = parse_color(optarg);
+ }
+ break;
case LO_LINE_COLOR:
if (state) {
state->args.colors.line.input = parse_color(optarg);
@@ -989,6 +1070,8 @@
.show_indicator = true,
.show_caps_lock_indicator = false,
.show_caps_lock_text = true,
+ .show_keyboard_layout = false,
+ .hide_keyboard_layout = false,
.show_failed_attempts = false
};
wl_list_init(&state.images);
@@ -1059,12 +1142,6 @@
return 1;
}
- if (wl_list_empty(&state.surfaces)) {
- free(state.args.font);
- swaylock_log(LOG_ERROR, "Exiting - no outputs to show on.");
- return 0;
- }
-
zwlr_input_inhibit_manager_v1_get_inhibitor(state.input_inhibit_manager);
if (wl_display_roundtrip(state.display) == -1) {
free(state.args.font);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/swaylock-1.3/meson.build new/swaylock-1.4/meson.build
--- old/swaylock-1.3/meson.build 2019-01-29 20:48:00.000000000 +0100
+++ new/swaylock-1.4/meson.build 2019-04-29 16:37:47.000000000 +0200
@@ -1,6 +1,7 @@
project(
'swaylock',
'c',
+ version: '1.3',
license: 'MIT',
meson_version: '>=0.48.0',
default_options: [
@@ -47,17 +48,13 @@
scdoc = find_program('scdoc', required: get_option('man-pages'))
wayland_scanner = find_program('wayland-scanner')
-version = get_option('swaylock-version')
-if version != ''
- version = '"@0@"'.format(version)
-else
- if not git.found()
- error('git is required to make the version string')
+version = '"@0@"'.format(meson.project_version())
+if git.found()
+ git_commit_hash = run_command([git.path(), 'describe', '--always', '--tags'])
+ git_branch = run_command([git.path(), 'rev-parse', '--abbrev-ref', 'HEAD'])
+ if git_commit_hash.returncode() == 0 and git_branch.returncode() == 0
+ version = '"@0@ (" __DATE__ ", branch \'@1@\')"'.format(git_commit_hash.stdout().strip(), git_branch.stdout().strip())
endif
-
- git_commit_hash = run_command([git.path(), 'describe', '--always', '--tags']).stdout().strip()
- git_branch = run_command([git.path(), 'rev-parse', '--abbrev-ref', 'HEAD']).stdout().strip()
- version = '"@0@ (" __DATE__ ", branch \'@1@\')"'.format(git_commit_hash, git_branch)
endif
add_project_arguments('-DSWAYLOCK_VERSION=@0@'.format(version), language: 'c')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/swaylock-1.3/meson_options.txt new/swaylock-1.4/meson_options.txt
--- old/swaylock-1.3/meson_options.txt 2019-01-29 20:48:00.000000000 +0100
+++ new/swaylock-1.4/meson_options.txt 2019-04-29 16:37:47.000000000 +0200
@@ -1,4 +1,3 @@
-option('swaylock-version', type : 'string', description: 'The version string reported in `swaylock --version`')
option('pam', type: 'feature', value: 'auto', description: 'Use PAM instead of shadow')
option('gdk-pixbuf', type: 'feature', value: 'auto', description: 'Enable support for more image formats')
option('man-pages', type: 'feature', value: 'auto', description: 'Generate and install man pages')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/swaylock-1.3/password.c new/swaylock-1.4/password.c
--- old/swaylock-1.3/password.c 2019-01-29 20:48:00.000000000 +0100
+++ new/swaylock-1.4/password.c 2019-04-29 16:37:47.000000000 +0200
@@ -137,6 +137,7 @@
schedule_indicator_clear(state);
schedule_password_clear(state);
break;
+ case XKB_KEY_m: /* fallthrough */
case XKB_KEY_d:
if (state->xkb.control) {
submit_password(state);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/swaylock-1.3/render.c new/swaylock-1.4/render.c
--- old/swaylock-1.3/render.c 2019-01-29 20:48:00.000000000 +0100
+++ new/swaylock-1.4/render.c 2019-04-29 16:37:47.000000000 +0200
@@ -32,7 +32,7 @@
}
}
-void render_frame(struct swaylock_surface *surface) {
+void render_frame_background(struct swaylock_surface *surface) {
struct swaylock_state *state = surface->state;
int buffer_width = surface->width * surface->scale;
@@ -49,13 +49,6 @@
cairo_t *cairo = surface->current_buffer->cairo;
cairo_set_antialias(cairo, CAIRO_ANTIALIAS_BEST);
- cairo_font_options_t *fo = cairo_font_options_create();
- cairo_font_options_set_hint_style(fo, CAIRO_HINT_STYLE_FULL);
- cairo_font_options_set_antialias(fo, CAIRO_ANTIALIAS_SUBPIXEL);
- cairo_font_options_set_subpixel_order(fo, to_cairo_subpixel_order(surface->subpixel));
- cairo_set_font_options(cairo, fo);
- cairo_font_options_destroy(fo);
- cairo_identity_matrix(cairo);
cairo_save(cairo);
cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE);
@@ -64,20 +57,64 @@
if (surface->image && state->args.mode != BACKGROUND_MODE_SOLID_COLOR) {
cairo_set_operator(cairo, CAIRO_OPERATOR_OVER);
render_background_image(cairo, surface->image,
- state->args.mode, buffer_width, buffer_height);
+ state->args.mode, buffer_width, buffer_height);
}
cairo_restore(cairo);
cairo_identity_matrix(cairo);
+ wl_surface_set_buffer_scale(surface->surface, surface->scale);
+ wl_surface_attach(surface->surface, surface->current_buffer->buffer, 0, 0);
+ wl_surface_damage(surface->surface, 0, 0, surface->width, surface->height);
+ wl_surface_commit(surface->surface);
+}
+
+void render_frame(struct swaylock_surface *surface) {
+ struct swaylock_state *state = surface->state;
+
int arc_radius = state->args.radius * surface->scale;
int arc_thickness = state->args.thickness * surface->scale;
+ int buffer_diameter = (arc_radius + arc_thickness) * 2;
+ int buffer_height = buffer_diameter * 2;
+
+ int indicator_radius = state->args.radius + state->args.thickness;
+ int subsurf_xpos = surface->width / 2 - indicator_radius;
+ int subsurf_ypos = surface->height / 2 - indicator_radius;
+ wl_subsurface_set_position(surface->subsurface, subsurf_xpos, subsurf_ypos);
+
+ surface->current_buffer = get_next_buffer(state->shm,
+ surface->indicator_buffers, buffer_diameter, buffer_height);
+ if (surface->current_buffer == NULL) {
+ return;
+ }
+
+ // Hide subsurface until we want it visible
+ wl_surface_attach(surface->child, NULL, 0, 0);
+ wl_surface_commit(surface->child);
+
+ cairo_t *cairo = surface->current_buffer->cairo;
+ cairo_set_antialias(cairo, CAIRO_ANTIALIAS_BEST);
+ cairo_font_options_t *fo = cairo_font_options_create();
+ cairo_font_options_set_hint_style(fo, CAIRO_HINT_STYLE_FULL);
+ cairo_font_options_set_antialias(fo, CAIRO_ANTIALIAS_SUBPIXEL);
+ cairo_font_options_set_subpixel_order(fo, to_cairo_subpixel_order(surface->subpixel));
+ cairo_set_font_options(cairo, fo);
+ cairo_font_options_destroy(fo);
+ cairo_identity_matrix(cairo);
+
+ // Clear
+ cairo_save(cairo);
+ cairo_set_source_rgba(cairo, 0, 0, 0, 0);
+ cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE);
+ cairo_paint(cairo);
+ cairo_restore(cairo);
+
float type_indicator_border_thickness =
TYPE_INDICATOR_BORDER_THICKNESS * surface->scale;
if (state->args.show_indicator && state->auth_state != AUTH_STATE_IDLE) {
// Draw circle
cairo_set_line_width(cairo, arc_thickness);
- cairo_arc(cairo, buffer_width / 2, buffer_height / 2, arc_radius,
+ cairo_arc(cairo, buffer_diameter / 2, buffer_diameter / 2, arc_radius,
0, 2 * M_PI);
set_color_for_state(cairo, state, &state->args.colors.inside);
cairo_fill_preserve(cairo);
@@ -86,6 +123,7 @@
// Draw a message
char *text = NULL;
+ const char *layout_text = NULL;
char attempts[4]; // like i3lock: count no more than 999
set_color_for_state(cairo, state, &state->args.colors.text);
cairo_select_font_face(cairo, state->args.font,
@@ -116,6 +154,21 @@
text = attempts;
}
}
+
+ xkb_layout_index_t num_layout = xkb_keymap_num_layouts(state->xkb.keymap);
+ if (!state->args.hide_keyboard_layout &&
+ (state->args.show_keyboard_layout || num_layout > 1)) {
+ xkb_layout_index_t curr_layout = 0;
+
+ // advance to the first active layout (if any)
+ while (curr_layout < num_layout &&
+ xkb_state_layout_index_is_active(state->xkb.state,
+ curr_layout, XKB_STATE_LAYOUT_EFFECTIVE) != 1) {
+ ++curr_layout;
+ }
+ // will handle invalid index if none are active
+ layout_text = xkb_keymap_layout_get_name(state->xkb.keymap, curr_layout);
+ }
break;
default:
break;
@@ -127,9 +180,9 @@
double x, y;
cairo_text_extents(cairo, text, &extents);
cairo_font_extents(cairo, &fe);
- x = (buffer_width / 2) -
+ x = (buffer_diameter / 2) -
(extents.width / 2 + extents.x_bearing);
- y = (buffer_height / 2) +
+ y = (buffer_diameter / 2) +
(fe.height / 2 - fe.descent);
cairo_move_to(cairo, x, y);
@@ -144,7 +197,7 @@
static double highlight_start = 0;
highlight_start +=
(rand() % (int)(M_PI * 100)) / 100.0 + M_PI * 0.5;
- cairo_arc(cairo, buffer_width / 2, buffer_height / 2,
+ cairo_arc(cairo, buffer_diameter / 2, buffer_diameter / 2,
arc_radius, highlight_start,
highlight_start + TYPE_INDICATOR_RANGE);
if (state->auth_state == AUTH_STATE_INPUT) {
@@ -164,12 +217,12 @@
// Draw borders
cairo_set_source_u32(cairo, state->args.colors.separator);
- cairo_arc(cairo, buffer_width / 2, buffer_height / 2,
+ cairo_arc(cairo, buffer_diameter / 2, buffer_diameter / 2,
arc_radius, highlight_start,
highlight_start + type_indicator_border_thickness);
cairo_stroke(cairo);
- cairo_arc(cairo, buffer_width / 2, buffer_height / 2,
+ cairo_arc(cairo, buffer_diameter / 2, buffer_diameter / 2,
arc_radius, highlight_start + TYPE_INDICATOR_RANGE,
highlight_start + TYPE_INDICATOR_RANGE +
type_indicator_border_thickness);
@@ -179,17 +232,52 @@
// Draw inner + outer border of the circle
set_color_for_state(cairo, state, &state->args.colors.line);
cairo_set_line_width(cairo, 2.0 * surface->scale);
- cairo_arc(cairo, buffer_width / 2, buffer_height / 2,
+ cairo_arc(cairo, buffer_diameter / 2, buffer_diameter / 2,
arc_radius - arc_thickness / 2, 0, 2 * M_PI);
cairo_stroke(cairo);
- cairo_arc(cairo, buffer_width / 2, buffer_height / 2,
+ cairo_arc(cairo, buffer_diameter / 2, buffer_diameter / 2,
arc_radius + arc_thickness / 2, 0, 2 * M_PI);
cairo_stroke(cairo);
+
+ // display layout text seperately
+ if (layout_text) {
+ cairo_text_extents_t extents;
+ cairo_font_extents_t fe;
+ double x, y;
+ double box_padding = 4.0 * surface->scale;
+ cairo_text_extents(cairo, layout_text, &extents);
+ cairo_font_extents(cairo, &fe);
+ // upper left coordinates for box
+ x = (buffer_diameter / 2) - (extents.width / 2) - box_padding;
+ y = (buffer_diameter / 2) + arc_radius + arc_thickness/2 +
+ box_padding; // use box_padding also as gap to indicator
+
+ // background box
+ cairo_rectangle(cairo, x, y,
+ extents.width + 2.0 * box_padding,
+ fe.height + 2.0 * box_padding);
+ cairo_set_source_u32(cairo, state->args.colors.layout_background);
+ cairo_fill_preserve(cairo);
+ // border
+ cairo_set_source_u32(cairo, state->args.colors.layout_border);
+ cairo_stroke(cairo);
+ cairo_new_sub_path(cairo);
+
+ // take font extents and padding into account
+ cairo_move_to(cairo,
+ x - extents.x_bearing + box_padding,
+ y + (fe.height - fe.descent) + box_padding);
+ cairo_set_source_u32(cairo, state->args.colors.layout_text);
+ cairo_show_text(cairo, layout_text);
+ cairo_new_sub_path(cairo);
+ }
}
- wl_surface_set_buffer_scale(surface->surface, surface->scale);
- wl_surface_attach(surface->surface, surface->current_buffer->buffer, 0, 0);
- wl_surface_damage(surface->surface, 0, 0, surface->width, surface->height);
+ wl_surface_set_buffer_scale(surface->child, surface->scale);
+ wl_surface_attach(surface->child, surface->current_buffer->buffer, 0, 0);
+ wl_surface_damage(surface->child, 0, 0, surface->current_buffer->width, surface->current_buffer->height);
+ wl_surface_commit(surface->child);
+
wl_surface_commit(surface->surface);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/swaylock-1.3/swaylock.1.scd new/swaylock-1.4/swaylock.1.scd
--- old/swaylock-1.3/swaylock.1.scd 2019-01-29 20:48:00.000000000 +0100
+++ new/swaylock-1.4/swaylock.1.scd 2019-04-29 16:37:47.000000000 +0200
@@ -27,6 +27,9 @@
*-e, --ignore-empty-password*
When an empty password is provided by the user, do not validate it.
+*-F, --show-failed-attempts*
+ Show the number of failed authentication attempts on the indicator.
+
*-f, --daemonize*
Detach from the controlling terminal after locking.
@@ -48,15 +51,20 @@
a background color. If the path potentially contains a ':', prefix it with another
':' to prevent interpreting part of it as <output>.
+*-k, --show-keyboard-layout*
+ Force displaying the current xkb layout while typing, even if only one layout
+ is configured.
+
+*-K, --hide-keyboard-layout*
+ Force hiding the current xkb layout while typing, even if more than one layout
+ is configured or the show-keyboard-layout option is set.
+
*-L, --disable-caps-lock-text*
Disable the Caps Lock Text.
*-l, --indicator-caps-lock*
Show the current Caps Lock state also on the indicator.
-*-F, --show-failed-attempts*
- Show the number of failed authentication attempts on the indicator.
-
*-s, --scaling*
Scaling mode for images: _stretch_, _fill_, _fit_, _center_, or _tile_. Use
the additional mode _solid\_color_ to display only the background color, even
@@ -75,7 +83,7 @@
*--caps-lock-bs-hl-color* <rrggbb[aa]>
Sets the color of backspace highlight segments when Caps Lock is active.
-*--caps-lock-bs-hl-color* <rrggbb[aa]>
+*--caps-lock-key-hl-color* <rrggbb[aa]>
Sets the color of the key press highlight segments when Caps Lock is active.
*--font* <font>
@@ -107,6 +115,15 @@
*--key-hl-color* <rrggbb[aa]>
Sets the color of key press highlight segments.
+*--layout-bg-color* <rrggbb[aa]>
+ Sets the background color of the box containing the layout text.
+
+*--layout-border-color* <rrggbb[aa]>
+ Sets the color of the border of the box containing the layout text.
+
+*--layout-text-color* <rrggbb[aa]>
+ Sets the color of the layout text.
+
*--line-color* <rrggbb[aa]>
Sets the color of the lines that separate the inside and outside of the
indicator when typing or idle.
++++++ swaylock-version.patch ++++++
--- /var/tmp/diff_new_pack.0Yrb3W/_old 2019-05-24 11:31:39.629402210 +0200
+++ /var/tmp/diff_new_pack.0Yrb3W/_new 2019-05-24 11:31:39.633402209 +0200
@@ -1,28 +1,12 @@
-diff -urEbwB swaylock-1.3/meson.build swaylock-1.3.new/meson.build
---- swaylock-1.3/meson.build 2019-01-29 20:48:00.000000000 +0100
-+++ swaylock-1.3.new/meson.build 2019-02-05 14:00:08.728822898 +0100
-@@ -1,6 +1,7 @@
+diff -urEbwB swaylock-1.4/meson.build swaylock-1.4.new/meson.build
+--- swaylock-1.4/meson.build 2019-04-29 16:37:47.000000000 +0200
++++ swaylock-1.4.new/meson.build 2019-05-23 08:09:39.276483783 +0200
+@@ -1,7 +1,7 @@
project(
'swaylock',
'c',
-+ version: '1.3',
+- version: '1.3',
++ version: '1.4',
license: 'MIT',
meson_version: '>=0.48.0',
default_options: [
-@@ -47,14 +48,9 @@
- scdoc = find_program('scdoc', required: get_option('man-pages'))
- wayland_scanner = find_program('wayland-scanner')
-
--version = get_option('swaylock-version')
--if version != ''
-- version = '"@0@"'.format(version)
--else
- if not git.found()
-- error('git is required to make the version string')
-- endif
--
-+ version = '"@0@"'.format(meson.project_version())
-+else
- git_commit_hash = run_command([git.path(), 'describe', '--always', '--tags']).stdout().strip()
- git_branch = run_command([git.path(), 'rev-parse', '--abbrev-ref', 'HEAD']).stdout().strip()
- version = '"@0@ (" __DATE__ ", branch \'@1@\')"'.format(git_commit_hash, git_branch)
1
0
Hello community,
here is the log from the commit of package benji for openSUSE:Factory checked in at 2019-05-24 11:31:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/benji (Old)
and /work/SRC/openSUSE:Factory/.benji.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "benji"
Fri May 24 11:31:32 2019 rev:3 rq:704864 version:0.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/benji/benji.changes 2019-03-22 15:08:14.197449405 +0100
+++ /work/SRC/openSUSE:Factory/.benji.new.5148/benji.changes 2019-05-24 11:31:37.269402818 +0200
@@ -1,0 +2,62 @@
+Thu May 23 04:31:24 UTC 2019 - mvetter(a)suse.com
+
+- Update to 0.6.0:
+ * URL parsing of I/O resources is now conforming to standards.
+ Especially for the RBD I/O module the two slashes directly after
+ the colon are no longer valid and have to be removed
+ (rbd://pool/image -> rbd:pool/image).
+ * Added I/O module for iSCSI. It is based on libiscsi and requires
+ no elevated permissions. Please see the documentation as Benji
+ requires a special version of the libiscsi Python bindings.
+ The module is single-threaded and synchronous, so performance
+ will be limited. Contributions are welcome!
+ * The algorithm used by benji enforce has seen an overhaul and
+ should be more comprehensible as the time categories are based
+ on natural time boundaries (start of the hour, day, week,
+ month, and year) now.
+ * Added a restore helper script (images/benji-k8s/scripts/benji-restore-pvc)
+ for Kubernetes. This script is intended to be run on a management
+ system with access to the Kubernetes cluster and can restore
+ a version into a new or an existing PVC/PV pair.
+ * The container images are now based on the Python 3.6 included in EPEL.
+ The RBD support has been updated to Ceph Nautilus. Nautilus also
+ added RADOS and RBD Python bindings for Python 3.6 which are now
+ used instead of building them themselves.
+- Add requires on python3-diskcache
+
+-------------------------------------------------------------------
+Tue Apr 2 11:16:12 UTC 2019 - mvetter(a)suse.com
+
+- Update to 0.5.0:
+ * Added fsfreeze support to the benji-k8s Docker image. Just add
+ the benji-backup.me/fsfreeze: yes annotation to the PVC.
+ Kubernetes hosts are accessed via pods which are deployed by
+ a DaemonSet, see the Helm chart for details.
+ * Use bulk inserts to speed up backups of images based on a
+ previous version. This also decreases memory usage.
+ * Switched from in-memory block lists to an iterator based approach.
+ This will increase performance and decrease memory usage when
+ backing up large images.
+ * Fixed a wrong index on the blocks table. This should also increase
+ performance. The database will need to be migrated with benji
+ database-migrate.
+ * Laid the foundation for structured logging.
+ * Removed database table stats and assorted code and commands.
+ Statistics are now kept together with the other version metadata
+ in the versions table. This means they are also removed when the
+ version is removed. If you want to keep historic statistics you
+ need to export them beforehand with benji -m ls or benji
+ metadata-export. This is a breaking change and you might need
+ adjust your scripts. As statistics are now included in a
+ version's metadata the metadata version is now 1.1.0.
+ Old metadata backups and exports with a metadata version of
+ 1.0.0 can be imported by the current version. The statistics will be
+ empty in that case. The database will need to be migrated with
+ benji database-migrate.
+ * Fixed a bug in the time calculation of benji enforce which
+ could lead to a late expiration of versions, the timing was
+ a few hours off.
+- Remove dependency on colorlog
+- Add dependency on colorama and structlog
+
+-------------------------------------------------------------------
Old:
----
v0.4.0.tar.gz
New:
----
v0.6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ benji.spec ++++++
--- /var/tmp/diff_new_pack.Y9lXXJ/_old 2019-05-24 11:31:38.265402561 +0200
+++ /var/tmp/diff_new_pack.Y9lXXJ/_new 2019-05-24 11:31:38.269402560 +0200
@@ -17,7 +17,7 @@
Name: benji
-Version: 0.4.0
+Version: 0.6.0
Release: 0
Summary: Deduplicating block based backup software
License: LGPL-3.0-only
@@ -30,8 +30,9 @@
Requires: python3-PrettyTable >= 0.7.2
Requires: python3-alembic >= 1.0.5
Requires: python3-argcomplete >= 1.9.4
-Requires: python3-colorlog >= 4.0.0
+Requires: python3-colorama >= 0.4.1
Requires: python3-dateutil >= 2.6.0
+Requires: python3-diskcache >= 3.0.6
Requires: python3-psutil
Requires: python3-pycryptodome >= 3.6.1
Requires: python3-pyparsing >= 2.3.0
@@ -41,6 +42,7 @@
Requires: python3-shortuuid
Requires: python3-sparse >= 0.2.2
Requires: python3-sqlalchemy >= 1.2.6
+Requires: python3-structlog >= 19.1.0
Recommends: python3-boto3
Recommends: python3-psycopg2 >= 2.7.4
BuildArch: noarch
++++++ v0.4.0.tar.gz -> v0.6.0.tar.gz ++++++
++++ 5050 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2019-05-24 11:31:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools"
Fri May 24 11:31:29 2019 rev:180 rq:704859 version:20190522.4ee44da8
Changes:
--------
--- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2019-05-22 15:40:14.790448647 +0200
+++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.5148/openSUSE-release-tools.changes 2019-05-24 11:31:35.341403314 +0200
@@ -1,0 +2,7 @@
+Thu May 23 01:48:25 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190522.4ee44da8:
+ * dist/k8s/heroes: include openSUSE:Leap:15.1:NonFree in origin_manager_report.
+ * osclib/util: correct python3 port by casting to list directly after filter.
+
+-------------------------------------------------------------------
Old:
----
openSUSE-release-tools-20190522.4707e237.obscpio
New:
----
openSUSE-release-tools-20190522.4ee44da8.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.ln79DL/_old 2019-05-24 11:31:36.069403127 +0200
+++ /var/tmp/diff_new_pack.ln79DL/_new 2019-05-24 11:31:36.073403126 +0200
@@ -20,7 +20,7 @@
%define source_dir openSUSE-release-tools
%define announcer_filename factory-package-news
Name: openSUSE-release-tools
-Version: 20190522.4707e237
+Version: 20190522.4ee44da8
Release: 0
Summary: Tools to aid in staging and release work for openSUSE/SUSE
License: GPL-2.0-or-later AND MIT
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.ln79DL/_old 2019-05-24 11:31:36.121403114 +0200
+++ /var/tmp/diff_new_pack.ln79DL/_new 2019-05-24 11:31:36.125403112 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param>
- <param name="changesrevision">90a5fe9f9010617ca5866de8fdc9891dd8a8ad33</param>
+ <param name="changesrevision">c4dccf80ab91f933a893b6faf5e0bc60abbb7210</param>
</service>
</servicedata>
++++++ openSUSE-release-tools-20190522.4707e237.obscpio -> openSUSE-release-tools-20190522.4ee44da8.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190522.4707e237/dist/kubernetes/environments/heroes/params.libsonnet new/openSUSE-release-tools-20190522.4ee44da8/dist/kubernetes/environments/heroes/params.libsonnet
--- old/openSUSE-release-tools-20190522.4707e237/dist/kubernetes/environments/heroes/params.libsonnet 2019-05-22 08:18:46.000000000 +0200
+++ new/openSUSE-release-tools-20190522.4ee44da8/dist/kubernetes/environments/heroes/params.libsonnet 2019-05-23 03:45:09.000000000 +0200
@@ -13,6 +13,7 @@
"obs-operator.origin_manager_report"+: {
projects: [
"openSUSE:Leap:15.1",
+ "openSUSE:Leap:15.1:NonFree",
],
},
"repo-checker.project_only"+: {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190522.4707e237/osclib/util.py new/openSUSE-release-tools-20190522.4ee44da8/osclib/util.py
--- old/openSUSE-release-tools-20190522.4707e237/osclib/util.py 2019-05-22 08:18:46.000000000 +0200
+++ new/openSUSE-release-tools-20190522.4ee44da8/osclib/util.py 2019-05-23 03:45:09.000000000 +0200
@@ -35,7 +35,7 @@
prefix = ':'.join(project.split(':')[:-1])
projects = project_list_prefix(apiurl, prefix)
- projects = filter(family_filter, projects)
+ projects = list(filter(family_filter, projects))
if project_suffix:
for i, project in enumerate(projects):
@@ -44,7 +44,7 @@
else:
projects[i] += project_suffix
- return list(projects)
+ return projects
def project_list_family_prior(apiurl, project, include_self=False, last=None, include_update=False):
"""
++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.ln79DL/_old 2019-05-24 11:31:37.089402864 +0200
+++ /var/tmp/diff_new_pack.ln79DL/_new 2019-05-24 11:31:37.097402861 +0200
@@ -1,5 +1,5 @@
name: openSUSE-release-tools
-version: 20190522.4707e237
-mtime: 1558505926
-commit: 4707e23722677c0adeb6796413b19966316fb910
+version: 20190522.4ee44da8
+mtime: 1558575909
+commit: 4ee44da8ee8abf7d201ab72506679ae12d9025ff
1
0
Hello community,
here is the log from the commit of package enigmail for openSUSE:Factory checked in at 2019-05-24 11:31:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/enigmail (Old)
and /work/SRC/openSUSE:Factory/.enigmail.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "enigmail"
Fri May 24 11:31:26 2019 rev:32 rq:704852 version:2.0.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/enigmail/enigmail.changes 2019-04-01 12:38:12.461910163 +0200
+++ /work/SRC/openSUSE:Factory/.enigmail.new.5148/enigmail.changes 2019-05-24 11:31:32.917403938 +0200
@@ -1,0 +2,7 @@
+Wed May 22 20:55:11 UTC 2019 - Andreas Stieger <andreas.stieger(a)gmx.de>
+
+- enigmail 2.0.11:
+ * CVE-2019-12269: Specially crafted inline PGP messages could
+ spoof a "correctly signed" message (boo#1135855)
+
+-------------------------------------------------------------------
Old:
----
enigmail-2.0.10.tar.gz
enigmail-2.0.10.tar.gz.asc
New:
----
enigmail-2.0.11.tar.gz
enigmail-2.0.11.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ enigmail.spec ++++++
--- /var/tmp/diff_new_pack.3w1JtI/_old 2019-05-24 11:31:33.733403729 +0200
+++ /var/tmp/diff_new_pack.3w1JtI/_new 2019-05-24 11:31:33.745403725 +0200
@@ -18,7 +18,7 @@
Name: enigmail
-Version: 2.0.10
+Version: 2.0.11
Release: 0
Summary: OpenPGP addon for Thunderbird and SeaMonkey
License: MPL-2.0
++++++ enigmail-2.0.10.tar.gz -> enigmail-2.0.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/configure new/enigmail/configure
--- old/enigmail/configure 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/configure 2019-05-19 18:47:45.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for enigmail 2.0.10.
+# Generated by GNU Autoconf 2.69 for enigmail 2.0.11.
#
# Report bugs to <https://www.enigmail.net>.
#
@@ -579,8 +579,8 @@
# Identity of this package.
PACKAGE_NAME='enigmail'
PACKAGE_TARNAME='enigmail'
-PACKAGE_VERSION='2.0.10'
-PACKAGE_STRING='enigmail 2.0.10'
+PACKAGE_VERSION='2.0.11'
+PACKAGE_STRING='enigmail 2.0.11'
PACKAGE_BUGREPORT='https://www.enigmail.net'
PACKAGE_URL=''
@@ -1195,7 +1195,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures enigmail 2.0.10 to adapt to many kinds of systems.
+\`configure' configures enigmail 2.0.11 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1261,7 +1261,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of enigmail 2.0.10:";;
+ short | recursive ) echo "Configuration of enigmail 2.0.11:";;
esac
cat <<\_ACEOF
@@ -1343,7 +1343,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-enigmail configure 2.0.10
+enigmail configure 2.0.11
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1360,7 +1360,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by enigmail $as_me 2.0.10, which was
+It was created by enigmail $as_me 2.0.11, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/configure.ac new/enigmail/configure.ac
--- old/enigmail/configure.ac 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/configure.ac 2019-05-19 18:47:45.000000000 +0200
@@ -2,7 +2,7 @@
AC_PREREQ(2.61)
min_automake_version="1.10"
-AC_INIT([enigmail],[2.0.10], [https://www.enigmail.net]
+AC_INIT([enigmail],[2.0.11], [https://www.enigmail.net]
AC_PATH_PROG(PYTHON, "python2")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/lang/da/enigmail.dtd new/enigmail/lang/da/enigmail.dtd
--- old/enigmail/lang/da/enigmail.dtd 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/lang/da/enigmail.dtd 2019-05-19 18:47:45.000000000 +0200
@@ -757,9 +757,9 @@
<!ENTITY enigmail.setupWiz.pgImportSettings.title "">
<!ENTITY enigmail.setupWiz.pgImportSettings.desc "Enigmail giver mulighed for at overføre alle dens indstillinger, herunder din OpenPGP
nøgler til en ny computer. Dette sker i to trin:
-<Html: ol>
-<html: li> Eksporter dine data fra din gamle computer ved hjælp af backupguiden fra Enigmail præferencerne</html:li>
-<html: li> Importer dataene til din nye computer ved hjælp af denne guiden.</html:li>
+<html:ol>
+<html:li> Eksporter dine data fra din gamle computer ved hjælp af backupguiden fra Enigmail præferencerne</html:li>
+<html:li> Importer dataene til din nye computer ved hjælp af denne guiden.</html:li>
</html:ol>">
<!ENTITY enigmail.setupWiz.pgImportSettings.fileName "">
<!ENTITY enigmail.setupWiz.pgImportSettings.importing "">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/decryption.jsm new/enigmail/package/decryption.jsm
--- old/enigmail/package/decryption.jsm 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/package/decryption.jsm 2019-05-19 18:47:45.000000000 +0200
@@ -528,7 +528,7 @@
pgpBlock = pgpBlock.replace(/\r?\n\r?\n/g, "\n");
}
- var head = cipherText.substr(0, beginIndexObj.value);
+ const head = "";
var tail = cipherText.substr(endIndexObj.value + 1,
cipherText.length - endIndexObj.value - 1);
@@ -616,8 +616,7 @@
}
blockSeparationObj.value = retStatusObj.blockSeparation;
- if ((head.search(/\S/) >= 0) ||
- (tail.search(/\S/) >= 0)) {
+ if (tail.search(/\S/) >= 0) {
statusFlagsObj.value |= EnigmailConstants.PARTIALLY_PGP;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/gpg.jsm new/enigmail/package/gpg.jsm
--- old/enigmail/package/gpg.jsm 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/package/gpg.jsm 2019-05-19 18:47:45.000000000 +0200
@@ -135,6 +135,7 @@
supports-wkd - does gpg support wkd (web key directory) (true for gpg >= 2.1.19)
export-result - does gpg print EXPORTED when exporting keys (true for gpg >= 2.1.10)
decryption-info - does gpg print DECRYPTION_INFO (true for gpg >= 2.0.19)
+ supports-show-only - does gpg support --import-options show-only (true for gpg >= 2.0)
@return: depending on featureName - Boolean unless specified differently:
(true if feature is available / false otherwise)
@@ -185,6 +186,8 @@
return EnigmailVersioning.greaterThanOrEqual(gpgVersion, "2.0.19");
case "supports-wkd":
return EnigmailVersioning.greaterThanOrEqual(gpgVersion, "2.1.19");
+ case "supports-show-only":
+ return EnigmailVersioning.greaterThanOrEqual(gpgVersion, "2.0");
}
return undefined;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/install.rdf new/enigmail/package/install.rdf
--- old/enigmail/package/install.rdf 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/package/install.rdf 2019-05-19 18:47:45.000000000 +0200
@@ -5,7 +5,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>{847b3a00-7ab1-11d4-8f02-006008948af5}</em:id>
- <em:version>2.0.10</em:version>
+ <em:version>2.0.11</em:version>
<em:type>2</em:type> <!-- type = extension -->
<em:bootstrap>true</em:bootstrap>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/key.jsm new/enigmail/package/key.jsm
--- old/enigmail/package/key.jsm 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/package/key.jsm 2019-05-19 18:47:45.000000000 +0200
@@ -28,6 +28,18 @@
const getKeyRing = EnigmailLazy.loader("enigmail/keyRing.jsm", "EnigmailKeyRing");
const getDialog = EnigmailLazy.loader("enigmail/dialog.jsm", "EnigmailDialog");
+const ENTRY_ID = 0;
+const KEY_TRUST_ID = 1;
+const KEY_SIZE_ID = 2;
+const KEY_ALGO_ID = 3;
+const KEY_ID = 4;
+const CREATED_ID = 5;
+const EXPIRY_ID = 6;
+const UID_ID = 7;
+const OWNERTRUST_ID = 8;
+const USERID_ID = 9;
+const SIG_TYPE_ID = 10;
+const KEY_USE_FOR_ID = 11;
var EnigmailKey = {
/**
@@ -55,8 +67,7 @@
if (matchb && (matchb.length > 3)) {
EnigmailLog.DEBUG("enigmailCommon.jsm:: Enigmail.extractPubkey: NO_PUBKEY 0x" + matchb[3] + "\n");
return matchb[2] + matchb[3];
- }
- else {
+ } else {
return null;
}
},
@@ -74,8 +85,7 @@
if (key.keyTrust === "r") {
// Key has already been revoked
getDialog().info(null, EnigmailLocale.getString("revokeKeyAlreadyRevoked", keyId));
- }
- else {
+ } else {
let userId = key.userId + " - 0x" + key.keyId;
if (!getDialog().confirmDlg(null,
@@ -89,8 +99,7 @@
getDialog().alert(null, errorMsgObj.value);
}
}
- }
- else {
+ } else {
// Suitable key for revocation certificate is not present in keyring
getDialog().alert(null, EnigmailLocale.getString("revokeKeyNotPresent", keyId));
}
@@ -131,70 +140,71 @@
* - state (one of "old" [existing key], "new" [new key], "invalid" [key cannot not be imported])
*/
getKeyListFromKeyBlock: function(keyBlockStr, errorMsgObj, interactive = true) {
- EnigmailLog.DEBUG("key.jsm: getKeyListFromKeyBlock\n");
+ EnigmailLog.DEBUG("key.jsm: getKeyListFromKeyBlock()\n");
let blocks;
let isBinary = false;
errorMsgObj.value = "";
- if (keyBlockStr.search(/-----BEGIN PGP (PUBLIC|PRIVATE) KEY BLOCK-----/) >= 0) {
- blocks = this.splitArmoredBlocks(keyBlockStr);
- }
- else {
- isBinary = true;
- blocks = [EnigmailOpenPGP.enigmailFuncs.bytesToArmor(EnigmailOpenPGP.openpgp.enums.armor.public_key, keyBlockStr)];
- }
-
- let keyList = [];
+ let keyList = getGpgKeyData(keyBlockStr);
let key = {};
- for (let b of blocks) {
- let m = EnigmailOpenPGP.openpgp.message.readArmored(b);
- for (let i = 0; i < m.packets.length; i++) {
- let packetType = EnigmailOpenPGP.openpgp.enums.read(EnigmailOpenPGP.openpgp.enums.packet, m.packets[i].tag);
- switch (packetType) {
- case "publicKey":
- case "secretKey":
- key = {
- id: m.packets[i].getKeyId().toHex().toUpperCase(),
- fpr: m.packets[i].getFingerprint().toUpperCase(),
- name: null,
- isSecret: false
- };
-
- if (!(key.id in keyList)) {
- keyList[key.id] = key;
- }
-
- if (packetType === "secretKey") {
- keyList[key.id].isSecret = true;
- }
- break;
- case "userid":
- if (!key.name) {
- key.name = m.packets[i].userid.replace(/[\r\n]+/g, " ");
- }
- break;
- case "signature":
- if (m.packets[i].signatureType === SIG_TYPE_REVOCATION) {
- let keyId = m.packets[i].issuerKeyId.toHex().toUpperCase();
- if (keyId in keyList) {
- keyList[keyId].revoke = true;
+ if (keyList.length === 0) {
+ EnigmailLog.DEBUG("key.jsm: getKeyListFromKeyBlock: no data from GnuPG\n");
+ if (keyBlockStr.search(/-----BEGIN PGP (PUBLIC|PRIVATE) KEY BLOCK-----/) >= 0) {
+ blocks = this.splitArmoredBlocks(keyBlockStr);
+ } else {
+ isBinary = true;
+ blocks = [EnigmailOpenPGP.enigmailFuncs.bytesToArmor(EnigmailOpenPGP.openpgp.enums.armor.public_key, keyBlockStr)];
+ }
+
+ for (let b of blocks) {
+ let m = EnigmailOpenPGP.openpgp.message.readArmored(b);
+
+ for (let i = 0; i < m.packets.length; i++) {
+ let packetType = EnigmailOpenPGP.openpgp.enums.read(EnigmailOpenPGP.openpgp.enums.packet, m.packets[i].tag);
+ switch (packetType) {
+ case "publicKey":
+ case "secretKey":
+ key = {
+ id: m.packets[i].getKeyId().toHex().toUpperCase(),
+ fpr: m.packets[i].getFingerprint().toUpperCase(),
+ name: null,
+ isSecret: false
+ };
+
+ if (!(key.id in keyList)) {
+ keyList[key.id] = key;
}
- else {
- keyList[keyId] = {
- revoke: true,
- id: keyId
- };
+
+ if (packetType === "secretKey") {
+ keyList[key.id].isSecret = true;
}
- }
- break;
+ break;
+ case "userid":
+ if (!key.name) {
+ key.name = m.packets[i].userid.replace(/[\r\n]+/g, " ");
+ }
+ break;
+ case "signature":
+ if (m.packets[i].signatureType === SIG_TYPE_REVOCATION) {
+ let keyId = m.packets[i].issuerKeyId.toHex().toUpperCase();
+ if (keyId in keyList) {
+ keyList[keyId].revoke = true;
+ } else {
+ keyList[keyId] = {
+ revoke: true,
+ id: keyId
+ };
+ }
+ }
+ break;
+ }
}
}
}
-
let retArr = [];
for (let k in keyList) {
retArr.push(keyList[k]);
@@ -256,3 +266,80 @@
}
};
+
+
+function getGpgKeyData(armorKeyString) {
+ if (!EnigmailGpg.getGpgFeature("supports-show-only")) return [];
+
+ EnigmailLog.DEBUG("key.jsm: getGpgKeyData()\n");
+ let command = EnigmailGpg.agentPath;
+ let args = EnigmailGpg.getStandardArgs(false).concat(["--no-tty", "--batch", "--no-verbose", "--dry-run", "--with-fingerprint", "--with-colons", "--import-options", "show-only", "--import"]);
+
+ let statusFlagsObj = {};
+ let statusMsgObj = {};
+ let exitCodeObj = {};
+ let errorMsgObj = {};
+
+ let output = EnigmailExecution.execCmd(command, args, armorKeyString, exitCodeObj, statusFlagsObj, statusMsgObj, errorMsgObj);
+
+ let lines = output.split(/\r?\n/);
+ let key = {};
+ let keyId = "";
+ let keyList = [];
+ /*
+ pub:u:256:22:84F83BE88C892606:1525969855:1683649855::u:::scESC:::::ed25519:::0:
+ fpr:::::::::AFE1B65C5F39ACA7960B22CD84F83BE88C892606:
+ uid:u::::1525969914::22DB32406212400B52CDC74DA2B33418637430F1::Patrick (ECC) <patrick(a)enigmail.net>::::::::::0:
+ uid:u::::1525969855::F70B7A77F085AA7BA003D6AFAB6FF0DB1FC901B0::enigmail <patrick(a)enigmail.net>::::::::::0:
+ sub:u:256:18:329DAB3350400C40:1525969855:1683649855:::::e:::::cv25519::
+ fpr:::::::::3B154538D4DFAA19BDADAAD0329DAB3350400C40:
+ */
+
+ for (let i = 0; i < lines.length; i++) {
+ const lineTokens = lines[i].split(/:/);
+
+ switch (lineTokens[ENTRY_ID]) {
+ case "pub":
+ case "sec":
+ key = {
+ id: lineTokens[KEY_ID],
+ fpr: null,
+ name: null,
+ isSecret: false
+ };
+
+ if (!(key.id in keyList)) {
+ keyList[key.id] = key;
+ }
+
+ if (lineTokens[ENTRY_ID] === "sec") {
+ keyList[key.id].isSecret = true;
+ }
+ break;
+ case "fpr":
+ if (!key.fpr) {
+ key.fpr = lineTokens[USERID_ID];
+ }
+ break;
+ case "uid":
+ if (!key.name) {
+ key.name = lineTokens[USERID_ID];
+ }
+ break;
+ case "rvs":
+ case "rvk":
+ keyId = lineTokens[KEY_ID];
+ if (keyId in keyList) {
+ keyList[keyId].revoke = true;
+ } else {
+ keyList[keyId] = {
+ revoke: true,
+ id: keyId
+ };
+ }
+ break;
+ }
+ }
+
+ return keyList;
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/tests/encryption-test.js new/enigmail/package/tests/encryption-test.js
--- old/enigmail/package/tests/encryption-test.js 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/package/tests/encryption-test.js 2019-05-19 18:47:45.000000000 +0200
@@ -92,4 +92,4 @@
expected = EnigmailLocale.getString("errorOwnKeyUnusable", "nobody(a)notfound.net");
Assert.equal(r.errorMsg, expected);
-})));
+})));
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/tests/installGnuPG-test.js new/enigmail/package/tests/installGnuPG-test.js
--- old/enigmail/package/tests/installGnuPG-test.js 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/package/tests/installGnuPG-test.js 2019-05-19 18:47:45.000000000 +0200
@@ -17,7 +17,7 @@
test(function shouldCheckHashSum() {
let inst = new Installer(null);
inst.installerFile = do_get_file("resources/dev-strike.asc", false);
- inst.hash = "041af0b00ea712bf5ebe349e5cceda148e0797539ee85acd8e06ac8921c6667d"; // SHA256 sum of installerFile
+ inst.hash = "15bc9d49f716dfb467c4e69241e4161df4aa3004ab0a21cd616fb2f4e46f0cd3"; // SHA256 sum of installerFile
Assert.ok(inst.checkHashSum());
-});
+});
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/tests/keyRing-test.js new/enigmail/package/tests/keyRing-test.js
--- old/enigmail/package/tests/keyRing-test.js 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/package/tests/keyRing-test.js 2019-05-19 18:47:45.000000000 +0200
@@ -41,10 +41,10 @@
// Output from GnuPG varies sligtly between different versions (new output data is added
// at the end of the list). Therefore each line is only compared to the length provided below
let expectedListing = [
- "pub:-:4096:1:781617319CE311C4:1430756251:1556986651::-:::scESC:",
+ "pub:-:4096:1:781617319CE311C4:1430756251:::-:::scESC:",
"fpr:::::::::65537E212DC19025AD38EDB2781617319CE311C4:",
- "uid:-::::1430756251::DB54FB278F6AE719DE0DE881B17D4C762F5752A9::anonymous strike <strike.devtest(a)gmail.com>:",
- "sub:-:4096:1:D535623BB60E9E71:1430756251:1556986651:::::e:"
+ "uid:-::::1557592308::DB54FB278F6AE719DE0DE881B17D4C762F5752A9::anonymous strike <strike.devtest(a)gmail.com>:",
+ "sub:-:4096:1:D535623BB60E9E71:1430756251::::::e:"
];
let keyDetList = keyDetails.split(/\n\r?/);
@@ -124,7 +124,6 @@
JSUnit.createStubWindow(),
false,
"-----BEGIN PGP PUBLIC KEY BLOCK-----" +
- "\n" + "Comment: GPGTools - https://gpgtools.org" +
"\n" +
"\n" + "mQINBFVHm5sBEACs94Ln+RMdeyBpWQtTZ/NZnwntsB10Wd3HTgo5sdA/OOFOJrWe" +
"\n" + "tJfAZ/HRxiSu1bwRaFVC8p061ftTbxf8bsdfsykYJQQqPODfcO0/oY2n/Z93ya8K" +
@@ -137,48 +136,48 @@
"\n" + "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
- "\n" + "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" +
- "\n" + "LBn4tb400iHp7byO85tF/H0OOI1K" +
- "\n" + "=CVNK" +
+ "\n" + "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" +
+ "\n" + "J14nd8wqFA==" +
+ "\n" + "=Hflu" +
"\n" + "-----END PGP PUBLIC KEY BLOCK-----" +
"\n" + "-----BEGIN PGP PRIVATE KEY BLOCK-----" +
- "\n" + "Comment: GPGTools - https://gpgtools.org" +
"\n" +
- "\n" + "lQc+BFVHm5sBEACs94Ln+RMdeyBpWQtTZ/NZnwntsB10Wd3HTgo5sdA/OOFOJrWe" +
+ "\n" + "lQdGBFVHm5sBEACs94Ln+RMdeyBpWQtTZ/NZnwntsB10Wd3HTgo5sdA/OOFOJrWe" +
"\n" + "tJfAZ/HRxiSu1bwRaFVC8p061ftTbxf8bsdfsykYJQQqPODfcO0/oY2n/Z93ya8K" +
"\n" + "TzjXR3qBQ1P7f5x71yeuo7Zrj7B0G44Xjfy+1L0eka9paBqmm3U5cUew5wSr772L" +
"\n" + "cflipWfncWXD2rBqgRfR339lRHd3Vwo7V8jje8rlP9msOuTMWCvQuQvpEkfIioXA" +
@@ -189,98 +188,99 @@
"\n" + "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
- "\n" + "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" +
- "\n" + "=h0dN" +
+ "\n" + "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" +
+ "\n" + "=HPTr" +
"\n" + "-----END PGP PRIVATE KEY BLOCK-----",
null, {});
const keyDetails = EnigmailKeyRing.getValidUids("0xD535623BB60E9E71").join("\n");
@@ -301,9 +301,9 @@
"TzjXR3qBQ1P7f5x71yeuo7Zrj7B0G44Xjfy+1L0eka9paBqmm3U5cUew5wSr772L");
Assert.equal(pubKey.keyData.substr(-52),
- "p1ovyC/fp5XjZaLHcyPAWAXKLBn4tb400iHp7byO85tF/H0OOI1K");
+ "CvVFilhH8wwQ7WRSzqAhTp6i/N9KXUHOczdXf7ZtJ14nd8wqFA==");
- Assert.equal(pubKey.keyData.length, 2972);
+ Assert.equal(pubKey.keyData.length, 3020);
@@ -368,11 +368,11 @@
EnigmailKeyRing.getAllKeys();
let pub = EnigmailKeyRing.extractKey(false, "0x781617319CE311C4", null, {}, {}).replace(/\r\n/g, "\n");
- Assert.equal(pub.substr(-50), "/H0OOI1K\n=CVNK\n-----END PGP PUBLIC KEY BLOCK-----\n");
+ Assert.equal(pub.substr(-50), "d8wqFA==\n=Hflu\n-----END PGP PUBLIC KEY BLOCK-----\n");
let pubAndSec = EnigmailKeyRing.extractKey(true, "strike.devtest(a)gmail.com", null, {}, {}).replace(/\r\n/g, "\n");
Assert.equal(pubAndSec.substr(-37), "\n-----END PGP PRIVATE KEY BLOCK-----\n");
- Assert.equal(pubAndSec.split(/\n/).length, 159);
+ Assert.equal(pubAndSec.split(/\n/).length, 160);
})));
@@ -674,9 +674,8 @@
const importResult = EnigmailKeyRing.importKeyFromFile(publicKey, errorMsgObj, importedKeysObj);
Assert.assertContains(importedKeysObj.value, "CC68572FE740754B38D758D1227073A53A6FA857");
Assert.equal(importResult, 0, errorMsgObj);
- const output = {
- "alice(a)example.org":
- "mQGNBFhoRoABDADJFyP60NvQWTE1e5+UVBy5jXyaRHsQrr5Zufoe3qcBC7eR27ngsdc2RhFY5PW/" +
+ const output = {
+ "alice(a)example.org": "mQGNBFhoRoABDADJFyP60NvQWTE1e5+UVBy5jXyaRHsQrr5Zufoe3qcBC7eR27ngsdc2RhFY5PW/" +
"2gLtS7fnwHTXS5xGbUUnjEZHeI1YLAgojxVrl4roR9dUNCArkqeJ3A2qx/9fhjzLgehmQDJyTjTn" +
"jTEoPsHizAmnnfuAQIrdiqwqyFRols+CVhb7rELUS4PsFTxX+p/w0UDiAHmPs0yXo6YZeFMW4xCL" +
"Wng35jRAui0Bz1ImG6tttqJDaWxz/RYn+otLpqFWLGR3ohp13Mddm4fksVFWPcynFhoJrwRjUcmL" +
@@ -729,8 +728,7 @@
"FEQwORk9HrbeImH/e2MvsGZ+UClLPHtBw9XsveIZ18Xk+8YgGbg5gaU5FlytWEyooKAplBbh5wzO" +
"XKcnZrAxUr+ZjqC7YhskjettjoI3Y03C7LmjIocBpF9bGnO0YZvctnOwHxhAAOeP2dm+rgpUApHy" +
"cBT1Hh+hwH0QlY6iafgVCG6gzwGk5uXjHe+wf71sjWhZ3mRi7E6CD9KkYHVMqW78",
- "alice(a)example.net":
- "mQGNBFhoRoABDADJFyP60NvQWTE1e5+UVBy5jXyaRHsQrr5Zufoe3qcBC7eR27ngsdc2RhFY5PW/" +
+ "alice(a)example.net": "mQGNBFhoRoABDADJFyP60NvQWTE1e5+UVBy5jXyaRHsQrr5Zufoe3qcBC7eR27ngsdc2RhFY5PW/" +
"2gLtS7fnwHTXS5xGbUUnjEZHeI1YLAgojxVrl4roR9dUNCArkqeJ3A2qx/9fhjzLgehmQDJyTjTn" +
"jTEoPsHizAmnnfuAQIrdiqwqyFRols+CVhb7rELUS4PsFTxX+p/w0UDiAHmPs0yXo6YZeFMW4xCL" +
"Wng35jRAui0Bz1ImG6tttqJDaWxz/RYn+otLpqFWLGR3ohp13Mddm4fksVFWPcynFhoJrwRjUcmL" +
@@ -791,10 +789,10 @@
Assert.equal(k.exitCode, 0);
Assert.equal(k.errorMsg, "");
EnigmailLog.DEBUG(" -> address: " + address +
- "\n -> wanted: " + output[address] +
- "\n -> got: " + k.keyData +
- "\n");
+ "\n -> wanted: " + output[address] +
+ "\n -> got: " + k.keyData +
+ "\n");
Assert.equal(k.keyData, output[address]);
}
-}))));
+}))));
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/tests/resources/dev-strike.asc new/enigmail/package/tests/resources/dev-strike.asc
--- old/enigmail/package/tests/resources/dev-strike.asc 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/package/tests/resources/dev-strike.asc 2019-05-19 18:47:45.000000000 +0200
@@ -1,5 +1,4 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Comment: GPGTools - https://gpgtools.org
mQINBFVHm5sBEACs94Ln+RMdeyBpWQtTZ/NZnwntsB10Wd3HTgo5sdA/OOFOJrWe
tJfAZ/HRxiSu1bwRaFVC8p061ftTbxf8bsdfsykYJQQqPODfcO0/oY2n/Z93ya8K
@@ -12,41 +11,42 @@
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
-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
-LBn4tb400iHp7byO85tF/H0OOI1K
-=CVNK
+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
+J14nd8wqFA==
+=Hflu
-----END PGP PUBLIC KEY BLOCK-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/tests/resources/dev-strike.sec new/enigmail/package/tests/resources/dev-strike.sec
--- old/enigmail/package/tests/resources/dev-strike.sec 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/package/tests/resources/dev-strike.sec 2019-05-19 18:47:45.000000000 +0200
@@ -1,7 +1,6 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
-Comment: GPGTools - https://gpgtools.org
-lQc+BFVHm5sBEACs94Ln+RMdeyBpWQtTZ/NZnwntsB10Wd3HTgo5sdA/OOFOJrWe
+lQdGBFVHm5sBEACs94Ln+RMdeyBpWQtTZ/NZnwntsB10Wd3HTgo5sdA/OOFOJrWe
tJfAZ/HRxiSu1bwRaFVC8p061ftTbxf8bsdfsykYJQQqPODfcO0/oY2n/Z93ya8K
TzjXR3qBQ1P7f5x71yeuo7Zrj7B0G44Xjfy+1L0eka9paBqmm3U5cUew5wSr772L
cflipWfncWXD2rBqgRfR339lRHd3Vwo7V8jje8rlP9msOuTMWCvQuQvpEkfIioXA
@@ -12,96 +11,97 @@
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
-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
-=h0dN
+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
+=HPTr
-----END PGP PRIVATE KEY BLOCK-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/wkdLookup.jsm new/enigmail/package/wkdLookup.jsm
--- old/enigmail/package/wkdLookup.jsm 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/package/wkdLookup.jsm 2019-05-19 18:47:45.000000000 +0200
@@ -16,6 +16,7 @@
const Ci = Components.interfaces;
const Cu = Components.utils;
+Cu.importGlobalProperties(["XMLHttpRequest"]);
Cu.import("resource://gre/modules/Sqlite.jsm"); /* global Sqlite: false */
Cu.import("resource://enigmail/log.jsm"); /* global EnigmailLog: false*/
Cu.import("resource://enigmail/funcs.jsm"); /* global EnigmailFuncs: false*/
@@ -56,9 +57,9 @@
}
Promise.all(emails.map(
- function(mailAddr) {
- return self.determineLastAttempt(mailAddr.trim().toLowerCase());
- }))
+ function(mailAddr) {
+ return self.determineLastAttempt(mailAddr.trim().toLowerCase());
+ }))
.then(function(checks) {
let toCheck = [];
@@ -68,8 +69,7 @@
if (checks[i]) {
EnigmailLog.DEBUG("wkdLookup.jsm: findKeys: recheck " + emails[i] + "\n");
toCheck.push(emails[i]);
- }
- else {
+ } else {
EnigmailLog.DEBUG("wkdLookup.jsm: findKeys: skip check " + emails[i] + "\n");
}
}
@@ -90,13 +90,11 @@
if (gotKeys.length > 0) {
importDownloadedKeys(gotKeys);
resolve(true);
- }
- else
+ } else
resolve(false);
});
- }
- else {
+ } else {
resolve(false);
}
@@ -142,45 +140,16 @@
});
},
- /**
- * get the download URL for an email address for WKD or domain-specific locations
- *
- * @param {String} email: email address
- *
- * @return URL
- */
-
- getDownloadUrlFromEmail: async function(email) {
- email = email.toLowerCase().trim();
-
- let at = email.indexOf("@");
-
- let domain = email.substr(at + 1);
- let user = email.substr(0, at);
-
- var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
- converter.charset = "UTF-8";
- var data = converter.convertToByteArray(user, {});
-
- var ch = Components.classes["@mozilla.org/security/hash;1"].createInstance(Components.interfaces.nsICryptoHash);
- ch.init(ch.SHA1);
- ch.update(data, data.length);
- let gotHash = ch.finish(false);
- let encodedHash = EnigmailZBase32.encode(gotHash);
-
- let url = "https://" + domain + "/.well-known/openpgpkey/hu/" + encodedHash;
- return url;
- },
-
- /**
+ /**
* get the WKD URL for an email address
*
* @param email: String - email address
+ * @param advancedMethod: Boolean - use "advanced" method as specifed in draft 08
*
* @return String: URL (or null if not possible)
*/
- getWkdUrlFromEmail: function(email) {
+ getWkdUrlFromEmail: function(email, advancedMethod) {
email = email.toLowerCase().trim();
let at = email.indexOf("@");
@@ -197,53 +166,71 @@
let gotHash = ch.finish(false);
let encodedHash = EnigmailZBase32.encode(gotHash);
- let url = "https://" + domain + "/.well-known/openpgpkey/hu/" + encodedHash;
+ let url = "";
+
+ if (advancedMethod) {
+ url = "https://openpgpkey." + domain + "/.well-known/openpgpkey/" + domain + "/hu/" + encodedHash + "?l=" + escape(user);
+ } else {
+ url = "https://" + domain + "/.well-known/openpgpkey/hu/" + encodedHash + "?l=" + escape(user);
+ }
return url;
},
downloadWkdKey: async function(email) {
- EnigmailLog.DEBUG("wkdLookup.jsm: downloadWkdKey(" + email + ")\n");
+ EnigmailLog.DEBUG("wkdLookup.jsm: downloadKey(" + email + ")\n");
+
+ let keyData = await this.doWkdKeyDownload(email, true);
- if (!window) {
- let appShellSvc = Cc["@mozilla.org/appshell/appShellService;1"].getService(Ci.nsIAppShellService);
- window = appShellSvc.hiddenDOMWindow;
+ if (!keyData) {
+ keyData = await this.doWkdKeyDownload(email, false);
}
- let url = await EnigmailWkdLookup.getDownloadUrlFromEmail(email);
+ return keyData;
+ },
- let hdrs = new window.Headers();
- hdrs.append('Authorization', 'Basic ' + btoa("no-user:"));
- hdrs.append('Content-Type', 'application/octet-stream');
-
- let myRequest = new window.Request(url, {
- method: 'GET',
- headers: hdrs,
- mode: 'cors',
- //redirect: 'error',
- redirect: 'follow',
- cache: 'default'
- });
+ doWkdKeyDownload: function(email, advancedMethod) {
+ EnigmailLog.DEBUG("wkdLookup.jsm: doWkdKeyDownload(" + email + ", " + advancedMethod + ")\n");
- let response;
- try {
- EnigmailLog.DEBUG("wkdLookup.jsm: downloadKey: requesting " + url + "\n");
- response = await window.fetch(myRequest);
- if (!response.ok) {
- return null;
- }
- } catch (ex) {
- EnigmailLog.DEBUG("wkdLookup.jsm: downloadKey: error " + ex.toString() + "\n");
- return null;
- }
+ return new Promise((resolve, reject) => {
+ let oReq = new XMLHttpRequest();
- try {
- let keyData = EnigmailData.arrayBufferToString(await response.arrayBuffer());
- EnigmailLog.DEBUG("wkdLookup.jsm: downloadKey: got data for " + email + "\n");
- return keyData;
- } catch (ex) {
- EnigmailLog.DEBUG("wkdLookup.jsm: downloadKey: error " + ex.toString() + "\n");
- return null;
- }
+ oReq.addEventListener("load", function _f() {
+ EnigmailLog.DEBUG("wkdLookup.jsm: doWkdKeyDownload: data for " + email + "\n");
+ if (oReq.status !== 200) {
+ resolve(null);
+ }
+ else {
+ try {
+ let keyData = EnigmailData.arrayBufferToString(oReq.response);
+ resolve(keyData);
+ } catch (ex) {
+ EnigmailLog.DEBUG("wkdLookup.jsm: doWkdKeyDownload: error " + ex.toString() + "\n");
+ resolve(null);
+ }
+ }
+ });
+
+ oReq.addEventListener("error", (e) => {
+ EnigmailLog.DEBUG("wkdLookup.jsm: doWkdKeyDownload: error for " + email + "\n");
+ EnigmailLog.DEBUG(" got error: " + e + "\n");
+ resolve(null);
+ },
+ false);
+
+ try {
+ let url = EnigmailWkdLookup.getWkdUrlFromEmail(email, advancedMethod);
+ EnigmailLog.DEBUG(`wkdLookup.jsm: doWkdKeyDownload: requesting ${url}\n`);
+
+ oReq.overrideMimeType("application/octet-stream");
+ oReq.responseType = "arraybuffer";
+ oReq.open("GET", url, true);
+ oReq.setRequestHeader('Authorization', 'Basic ' + btoa("no-user:"));
+
+ oReq.send();
+ } catch (ex) {
+ EnigmailLog.DEBUG(" got error: " + ex.toString() + "\n");
+ }
+ });
}
};
@@ -263,8 +250,7 @@
EnigmailLog.DEBUG("wkdLookup.jsm: checkDatabaseStructure - success\n");
if (!exists) {
return createAutoKeyLocateTable(connection);
- }
- else {
+ } else {
return PromiseUtils.defer();
}
},
@@ -344,4 +330,4 @@
}
EnigmailKeyRing.importKey(null, false, keyData, "", {}, {});
-}
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/ui/content/enigmailMessengerOverlay.js new/enigmail/ui/content/enigmailMessengerOverlay.js
--- old/enigmail/ui/content/enigmailMessengerOverlay.js 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/ui/content/enigmailMessengerOverlay.js 2019-05-19 18:47:45.000000000 +0200
@@ -852,6 +852,13 @@
if (bodyElement.firstChild) {
let node = bodyElement.firstChild;
while (node) {
+ if (node.firstChild &&
+ node.firstChild.nodeName == "LEGEND" &&
+ node.firstChild.className == "mimeAttachmentHeaderName") {
+ // we reached the area where inline attachments are displayed
+ // --> don't try to decrypt displayed inline attachments
+ break;
+ }
if (node.nodeName == "DIV") {
foundIndex = node.textContent.indexOf(findStr);
@@ -950,12 +957,10 @@
}
}
- // extract text preceeding and/or following armored block
+ // extract text following armored block
var head = "";
var tail = "";
if (findStr) {
- head = msgText.substring(0, msgText.indexOf(findStr)).replace(/^[\n\r\s]*/, "");
- head = head.replace(/[\n\r\s]*$/, "");
var endStart = msgText.indexOf("-----END PGP");
var nextLine = msgText.substring(endStart).search(/[\n\r]/);
if (nextLine > 0) {
@@ -1095,9 +1100,8 @@
if (!msgUriSpec || (displayedUriSpec == msgUriSpec)) {
if (EnigmailPEPAdapter.usingPep() && pEpResult) {
Enigmail.hdrView.displayPepStatus(pEpResult.rating, pEpResult.fpr, null, pEpResult.persons);
- }
- else {
- if ((head.length > 0) || (tail.length > 0)) {
+ } else {
+ if (tail.length > 0) {
statusFlags |= EnigmailConstants.PARTIALLY_PGP;
}
Enigmail.hdrView.updateHdrIcons(exitCode, statusFlags, keyIdObj.value, userIdObj.value,
@@ -1216,20 +1220,11 @@
}
var msgRfc822Text = "";
- if (head || tail) {
- if (head) {
- // print a warning if the signed or encrypted part doesn't start
- // quite early in the message
- let matches = head.match(/(\n)/g);
- if (matches && matches.length > 10) {
- msgRfc822Text = EnigmailData.convertFromUnicode(EnigmailLocale.getString("notePartEncrypted"), charset) + "\n\n";
- }
- msgRfc822Text += head + "\n\n";
- }
+ if (tail) {
msgRfc822Text += EnigmailData.convertFromUnicode(EnigmailLocale.getString("beginPgpPart"), charset) + "\n\n";
}
msgRfc822Text += plainText;
- if (head || tail) {
+ if (tail) {
msgRfc822Text += "\n\n" + EnigmailData.convertFromUnicode(EnigmailLocale.getString("endPgpPart"), charset) + "\n\n" + tail;
}
@@ -1262,17 +1257,11 @@
while (node) {
if (node.nodeName == "DIV") {
- foundIndex = node.textContent.indexOf(findStr);
-
- if (foundIndex >= 0) {
- if (node.textContent.indexOf(findStr + " LICENSE AUTHORIZATION") == foundIndex)
- foundIndex = -1;
- }
- if (foundIndex >= 0) {
- node.innerHTML = EnigmailFuncs.formatPlaintextMsg(EnigmailData.convertToUnicode(messageContent, charset));
- Enigmail.msg.movePEPsubject();
- return;
- }
+ // for safety reasons, we replace the complete visible message with
+ // the decrypted or signed part (bug 983)
+ node.innerHTML = EnigmailFuncs.formatPlaintextMsg(EnigmailData.convertToUnicode(messageContent, charset));
+ Enigmail.msg.movePEPsubject();
+ return;
}
node = node.nextSibling;
}
@@ -1282,17 +1271,9 @@
foundIndex = -1;
while (node) {
if (node.nodeName == "PRE") {
- foundIndex = node.textContent.indexOf(findStr);
-
- if (foundIndex >= 0) {
- if (node.textContent.indexOf(findStr + " LICENSE AUTHORIZATION") == foundIndex)
- foundIndex = -1;
- }
- if (foundIndex >= 0) {
- node.innerHTML = EnigmailFuncs.formatPlaintextMsg(EnigmailData.convertToUnicode(messageContent, charset));
- Enigmail.msg.movePEPsubject();
- return;
- }
+ node.innerHTML = EnigmailFuncs.formatPlaintextMsg(EnigmailData.convertToUnicode(messageContent, charset));
+ Enigmail.msg.movePEPsubject();
+ return;
}
node = node.nextSibling;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/ui/content/enigmailMsgComposeOverlay.js new/enigmail/ui/content/enigmailMsgComposeOverlay.js
--- old/enigmail/ui/content/enigmailMsgComposeOverlay.js 2019-03-24 13:09:35.000000000 +0100
+++ new/enigmail/ui/content/enigmailMsgComposeOverlay.js 2019-05-19 18:47:45.000000000 +0200
@@ -4775,7 +4775,7 @@
var beginIndex = beginIndexObj.value;
var endIndex = endIndexObj.value;
- var head = docText.substr(0, beginIndex);
+ const head = "";
var tail = docText.substr(endIndex + 1);
var pgpBlock = docText.substr(beginIndex, endIndex - beginIndex + 1);
1
0
Hello community,
here is the log from the commit of package kernel-source for openSUSE:Factory checked in at 2019-05-24 11:31:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kernel-source (Old)
and /work/SRC/openSUSE:Factory/.kernel-source.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kernel-source"
Fri May 24 11:31:10 2019 rev:489 rq:704713 version:5.1.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/kernel-source/dtb-aarch64.changes 2019-05-20 10:27:42.437929975 +0200
+++ /work/SRC/openSUSE:Factory/.kernel-source.new.5148/dtb-aarch64.changes 2019-05-24 11:31:19.245407460 +0200
@@ -1,0 +2,246 @@
+Wed May 22 13:11:40 CEST 2019 - jslaby(a)suse.cz
+
+- Update config files.
+- commit 0739fa4
+
+-------------------------------------------------------------------
+Wed May 22 09:23:31 CEST 2019 - jslaby(a)suse.cz
+
+- dm: make sure to obey max_io_len_target_boundary (bnc#1135868).
+- commit 4be0add
+
+-------------------------------------------------------------------
+Wed May 22 08:01:07 CEST 2019 - jslaby(a)suse.cz
+
+- Linux 5.1.4 (bnc#1012628).
+- s390/mm: convert to the generic get_user_pages_fast code
+ (bnc#1012628).
+- s390/mm: make the pxd_offset functions more robust
+ (bnc#1012628).
+- libnvdimm/namespace: Fix label tracking error (bnc#1012628).
+- powerpc/32s: fix flush_hash_pages() on SMP (bnc#1012628).
+- xen/pvh: correctly setup the PV EFI interface for dom0
+ (bnc#1012628).
+- xen/pvh: set xen_domain_type to HVM in xen_pvh_init
+ (bnc#1012628).
+- kbuild: turn auto.conf.cmd into a mandatory include file
+ (bnc#1012628).
+- smb3: display session id in debug data (bnc#1012628).
+- KVM: lapic: Busy wait for timer to expire when using hv_timer
+ (bnc#1012628).
+- KVM: x86: Skip EFER vs. guest CPUID checks for host-initiated
+ writes (bnc#1012628).
+- KVM: Fix the bitmap range to copy during clear dirty
+ (bnc#1012628).
+- Revert "KVM: nVMX: Expose RDPMC-exiting only when guest supports
+ PMU" (bnc#1012628).
+- jbd2: fix potential double free (bnc#1012628).
+- ALSA: hda/realtek - Fix for Lenovo B50-70 inverted internal
+ microphone bug (bnc#1012628).
+- ALSA: hda/realtek - Fixup headphone noise via runtime suspend
+ (bnc#1012628).
+- ALSA: hda/realtek - Corrected fixup for System76 Gazelle
+ (gaze14) (bnc#1012628).
+- ext4: avoid panic during forced reboot due to aborted journal
+ (bnc#1012628).
+- ext4: fix use-after-free in dx_release() (bnc#1012628).
+- ext4: fix data corruption caused by overlapping unaligned and
+ aligned IO (bnc#1012628).
+- ext4: zero out the unused memory region in the extent tree block
+ (bnc#1012628).
+- tty: Don't force RISCV SBI console as preferred console
+ (bnc#1012628).
+- fs/writeback.c: use rcu_barrier() to wait for inflight wb
+ switches going into workqueue when umount (bnc#1012628).
+- mm/compaction.c: correct zone boundary handling when isolating
+ pages from a pageblock (bnc#1012628).
+- ARM: dts: imx: Fix the AR803X phy-mode (bnc#1012628).
+- ipmi:ssif: compare block number correctly for multi-part return
+ messages (bnc#1012628).
+- ipmi: Add the i2c-addr property for SSIF interfaces
+ (bnc#1012628).
+- bcache: never set KEY_PTRS of journal key to 0 in
+ journal_reclaim() (bnc#1012628).
+- bcache: fix a race between cache register and cacheset
+ unregister (bnc#1012628).
+- Btrfs: fix race between send and deduplication that lead to
+ failures and crashes (bnc#1012628).
+- Btrfs: do not start a transaction at iterate_extent_inodes()
+ (bnc#1012628).
+- Btrfs: do not start a transaction during fiemap (bnc#1012628).
+- Btrfs: send, flush dellaloc in order to avoid data loss
+ (bnc#1012628).
+- btrfs: Honour FITRIM range constraints during free space trim
+ (bnc#1012628).
+- btrfs: Correctly free extent buffer in case
+ btree_read_extent_buffer_pages fails (bnc#1012628).
+- btrfs: Check the first key and level for cached extent buffer
+ (bnc#1012628).
+- ext4: fix ext4_show_options for file systems w/o journal
+ (bnc#1012628).
+- ext4: actually request zeroing of inode table after grow
+ (bnc#1012628).
+- ext4: fix use-after-free race with debug_want_extra_isize
+ (bnc#1012628).
+- ext4: avoid drop reference to iloc.bh twice (bnc#1012628).
+- ext4: ignore e_value_offs for xattrs with value-in-ea-inode
+ (bnc#1012628).
+- ext4: make sanity check in mballoc more strict (bnc#1012628).
+- jbd2: check superblock mapped prior to committing (bnc#1012628).
+- tty/vt: fix write/write race in ioctl(KDSKBSENT) handler
+ (bnc#1012628).
+- tty: vt.c: Fix TIOCL_BLANKSCREEN console blanking if
+ blankinterval == 0 (bnc#1012628).
+- mtd: maps: Allow MTD_PHYSMAP with MTD_RAM (bnc#1012628).
+- mtd: maps: physmap: Store gpio_values correctly (bnc#1012628).
+- mtd: spi-nor: intel-spi: Avoid crossing 4K address boundary
+ on read/write (bnc#1012628).
+- mfd: max77620: Fix swapped FPS_PERIOD_MAX_US values
+ (bnc#1012628).
+- mfd: da9063: Fix OTP control register names to match datasheets
+ for DA9063/63L (bnc#1012628).
+- ACPICA: Linux: move ACPI_DEBUG_DEFAULT flag out of ifndef
+ (bnc#1012628).
+- ACPI: PM: Set enable_for_wake for wakeup GPEs during
+ suspend-to-idle (bnc#1012628).
+- userfaultfd: use RCU to free the task struct when fork fails
+ (bnc#1012628).
+- ocfs2: fix ocfs2 read inode data panic in ocfs2_iget
+ (bnc#1012628).
+- hugetlb: use same fault hash key for shared and private mappings
+ (bnc#1012628).
+- mm/hugetlb.c: don't put_page in lock of hugetlb_lock
+ (bnc#1012628).
+- mm/huge_memory: fix vmf_insert_pfn_{pmd, pud}() crash, handle
+ unaligned addresses (bnc#1012628).
+- mm/mincore.c: make mincore() more conservative (bnc#1012628).
+- crypto: ccree - handle tee fips error during power management
+ resume (bnc#1012628).
+- crypto: ccree - add function to handle cryptocell tee fips error
+ (bnc#1012628).
+- crypto: ccree - HOST_POWER_DOWN_EN should be the last CC access
+ during suspend (bnc#1012628).
+- crypto: ccree - pm resume first enable the source clk
+ (bnc#1012628).
+- crypto: ccree - don't map AEAD key and IV on stack
+ (bnc#1012628).
+- crypto: ccree - use correct internal state sizes for export
+ (bnc#1012628).
+- crypto: ccree - don't map MAC key on stack (bnc#1012628).
+- crypto: ccree - fix mem leak on error path (bnc#1012628).
+- crypto: ccree - remove special handling of chained sg
+ (bnc#1012628).
+- bpf: fix out of bounds backwards jmps due to dead code removal
+ (bnc#1012628).
+- bpf, arm64: remove prefetch insn in xadd mapping (bnc#1012628).
+- ASoC: codec: hdac_hdmi add device_link to card device
+ (bnc#1012628).
+- ASoC: fsl_esai: Fix missing break in switch statement
+ (bnc#1012628).
+- ASoC: RT5677-SPI: Disable 16Bit SPI Transfers (bnc#1012628).
+- ASoC: max98090: Fix restore of DAPM Muxes (bnc#1012628).
+- ALSA: hdea/realtek - Headset fixup for System76 Gazelle (gaze14)
+ (bnc#1012628).
+- ALSA: hda/realtek - EAPD turn on later (bnc#1012628).
+- ALSA: hda/hdmi - Consider eld_valid when reporting jack event
+ (bnc#1012628).
+- ALSA: hda/hdmi - Read the pin sense from register when repolling
+ (bnc#1012628).
+- ALSA: usb-audio: Fix a memory leak bug (bnc#1012628).
+- ALSA: line6: toneport: Fix broken usage of timer for delayed
+ execution (bnc#1012628).
+- mmc: sdhci-pci: Fix BYT OCP setting (bnc#1012628).
+- mmc: core: Fix tag set memory leak (bnc#1012628).
+- mmc: tegra: fix ddr signaling for non-ddr modes (bnc#1012628).
+- dt-bindings: mmc: Add disable-cqe-dcmd property (bnc#1012628).
+- drivers/dax: Allow to include DEV_DAX_PMEM as builtin
+ (bnc#1012628).
+- crypto: arm64/aes-neonbs - don't access already-freed walk.iv
+ (bnc#1012628).
+- crypto: arm/aes-neonbs - don't access already-freed walk.iv
+ (bnc#1012628).
+- crypto: caam/qi2 - generate hash keys in-place (bnc#1012628).
+- crypto: caam/qi2 - fix DMA mapping of stack memory
+ (bnc#1012628).
+- crypto: caam/qi2 - fix zero-length buffer DMA mapping
+ (bnc#1012628).
+- crypto: rockchip - update IV buffer to contain the next IV
+ (bnc#1012628).
+- crypto: gcm - fix incompatibility between "gcm" and "gcm_base"
+ (bnc#1012628).
+- crypto: arm64/gcm-aes-ce - fix no-NEON fallback code
+ (bnc#1012628).
+- crypto: x86/crct10dif-pcl - fix use via crypto_shash_digest()
+ (bnc#1012628).
+- crypto: crct10dif-generic - fix use via crypto_shash_digest()
+ (bnc#1012628).
+- crypto: skcipher - don't WARN on unprocessed data after slow
+ walk step (bnc#1012628).
+- crypto: vmx - fix copy-paste error in CTR mode (bnc#1012628).
+- crypto: ccp - Do not free psp_master when PLATFORM_INIT fails
+ (bnc#1012628).
+- crypto: ccm - fix incompatibility between "ccm" and "ccm_base"
+ (bnc#1012628).
+- crypto: chacha20poly1305 - set cra_name correctly (bnc#1012628).
+- crypto: chacha-generic - fix use as arm64 no-NEON fallback
+ (bnc#1012628).
+- crypto: lrw - don't access already-freed walk.iv (bnc#1012628).
+- crypto: salsa20 - don't access already-freed walk.iv
+ (bnc#1012628).
+- crypto: crypto4xx - fix cfb and ofb "overran dst buffer" issues
+ (bnc#1012628).
+- crypto: crypto4xx - fix ctr-aes missing output IV (bnc#1012628).
+- x86/MCE/AMD: Don't report L1 BTB MCA errors on some family
+ 17h models (bnc#1012628).
+- x86/MCE: Add an MCE-record filtering function (bnc#1012628).
+- sched/x86: Save [ER]FLAGS on context switch (bnc#1012628).
+- arm64: Save and restore OSDLR_EL1 across suspend/resume
++++ 56 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/kernel-source/dtb-aarch64.changes
++++ and /work/SRC/openSUSE:Factory/.kernel-source.new.5148/dtb-aarch64.changes
dtb-armv6l.changes: same change
dtb-armv7l.changes: same change
kernel-64kb.changes: same change
kernel-debug.changes: same change
kernel-default.changes: same change
kernel-docs.changes: same change
kernel-kvmsmall.changes: same change
kernel-lpae.changes: same change
kernel-obs-build.changes: same change
kernel-obs-qa.changes: same change
kernel-pae.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-vanilla.changes: same change
kernel-zfcpdump.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dtb-aarch64.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:29.713404764 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:29.733404758 +0200
@@ -17,7 +17,7 @@
%define srcversion 5.1
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -29,9 +29,9 @@
%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,klp-symbols,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
Name: dtb-aarch64
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
dtb-armv6l.spec: same change
dtb-armv7l.spec: same change
++++++ kernel-64kb.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:29.813404738 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:29.817404737 +0200
@@ -18,7 +18,7 @@
%define srcversion 5.1
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%define vanilla_only 0
@@ -62,9 +62,9 @@
Summary: Kernel with 64kb PAGE_SIZE
License: GPL-2.0
Group: System/Kernel
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
@@ -169,10 +169,10 @@
Conflicts: libc.so.6()(64bit)
%endif
Provides: kernel = %version-%source_rel
-Provides: kernel-%build_flavor-base-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
-Provides: kernel-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: kernel-%build_flavor-base-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
+Provides: kernel-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
# END COMMON DEPS
-Provides: %name-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: %name-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
%obsolete_rebuilds %name
Source0: http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz
Source2: source-post.sh
++++++ kernel-debug.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:29.833404733 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:29.837404732 +0200
@@ -18,7 +18,7 @@
%define srcversion 5.1
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%define vanilla_only 0
@@ -62,9 +62,9 @@
Summary: A Debug Version of the Kernel
License: GPL-2.0
Group: System/Kernel
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
@@ -169,10 +169,10 @@
Conflicts: libc.so.6()(64bit)
%endif
Provides: kernel = %version-%source_rel
-Provides: kernel-%build_flavor-base-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
-Provides: kernel-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: kernel-%build_flavor-base-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
+Provides: kernel-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
# END COMMON DEPS
-Provides: %name-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: %name-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
%ifarch ppc64
Provides: kernel-kdump = 2.6.28
Obsoletes: kernel-kdump <= 2.6.28
++++++ kernel-default.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:29.857404726 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:29.861404725 +0200
@@ -18,7 +18,7 @@
%define srcversion 5.1
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%define vanilla_only 0
@@ -62,9 +62,9 @@
Summary: The Standard Kernel
License: GPL-2.0
Group: System/Kernel
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
@@ -169,10 +169,10 @@
Conflicts: libc.so.6()(64bit)
%endif
Provides: kernel = %version-%source_rel
-Provides: kernel-%build_flavor-base-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
-Provides: kernel-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: kernel-%build_flavor-base-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
+Provides: kernel-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
# END COMMON DEPS
-Provides: %name-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: %name-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
%ifarch %ix86
Provides: kernel-smp = 2.6.17
Obsoletes: kernel-smp <= 2.6.17
++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:29.885404719 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:29.889404718 +0200
@@ -17,7 +17,7 @@
%define srcversion 5.1
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -31,9 +31,9 @@
Summary: Kernel Documentation
License: GPL-2.0
Group: Documentation/Man
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
@@ -63,7 +63,7 @@
%endif
Url: http://www.kernel.org/
Provides: %name = %version-%source_rel
-Provides: %name-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: %name-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz
++++++ kernel-kvmsmall.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:29.917404711 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:29.925404709 +0200
@@ -18,7 +18,7 @@
%define srcversion 5.1
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%define vanilla_only 0
@@ -62,9 +62,9 @@
Summary: The Small Developer Kernel for KVM
License: GPL-2.0
Group: System/Kernel
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
@@ -169,10 +169,10 @@
Conflicts: libc.so.6()(64bit)
%endif
Provides: kernel = %version-%source_rel
-Provides: kernel-%build_flavor-base-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
-Provides: kernel-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: kernel-%build_flavor-base-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
+Provides: kernel-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
# END COMMON DEPS
-Provides: %name-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: %name-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
%obsolete_rebuilds %name
Source0: http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz
Source2: source-post.sh
kernel-lpae.spec: same change
++++++ kernel-obs-build.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:30.017404685 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:30.021404685 +0200
@@ -19,7 +19,7 @@
#!BuildIgnore: post-build-checks
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%define vanilla_only 0
@@ -45,7 +45,7 @@
%endif
%endif
%endif
-BuildRequires: kernel%kernel_flavor-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+BuildRequires: kernel%kernel_flavor-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
%if 0%{?rhel_version}
BuildRequires: kernel
@@ -64,9 +64,9 @@
Summary: package kernel and initrd for OBS VM builds
License: GPL-2.0
Group: SLES
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
++++++ kernel-obs-qa.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:30.053404676 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:30.065404673 +0200
@@ -17,7 +17,7 @@
# needsrootforbuild
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -36,9 +36,9 @@
Summary: Basic QA tests for the kernel
License: GPL-2.0
Group: SLES
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:30.109404662 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:30.117404660 +0200
@@ -18,7 +18,7 @@
%define srcversion 5.1
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%define vanilla_only 0
@@ -62,9 +62,9 @@
Summary: Kernel with PAE Support
License: GPL-2.0
Group: System/Kernel
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
@@ -169,10 +169,10 @@
Conflicts: libc.so.6()(64bit)
%endif
Provides: kernel = %version-%source_rel
-Provides: kernel-%build_flavor-base-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
-Provides: kernel-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: kernel-%build_flavor-base-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
+Provides: kernel-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
# END COMMON DEPS
-Provides: %name-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: %name-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
%ifarch %ix86
Provides: kernel-bigsmp = 2.6.17
Obsoletes: kernel-bigsmp <= 2.6.17
++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:30.161404648 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:30.165404647 +0200
@@ -18,7 +18,7 @@
%define srcversion 5.1
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%define vanilla_only 0
@@ -30,9 +30,9 @@
Summary: The Linux Kernel Sources
License: GPL-2.0
Group: Development/Sources
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
@@ -43,7 +43,7 @@
BuildRequires: sed
Requires(post): coreutils sed
Provides: %name = %version-%source_rel
-Provides: %name-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: %name-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
Provides: linux
Provides: multiversion(kernel)
Source0: http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz
++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:30.217404634 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:30.221404633 +0200
@@ -24,10 +24,10 @@
Summary: Kernel Symbol Versions (modversions)
License: GPL-2.0
Group: Development/Sources
-Version: 5.1.3
+Version: 5.1.4
%if %using_buildservice
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
@@ -55,7 +55,7 @@
%endif
Requires: pesign-obs-integration
Provides: %name = %version-%source_rel
-Provides: %name-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: %name-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
Provides: multiversion(kernel)
Source: README.KSYMS
Requires: kernel-devel%variant = %version-%source_rel
++++++ kernel-vanilla.spec ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:30.241404628 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:30.249404625 +0200
@@ -18,7 +18,7 @@
%define srcversion 5.1
-%define patchversion 5.1.3
+%define patchversion 5.1.4
%define variant %{nil}
%define vanilla_only 0
@@ -62,9 +62,9 @@
Summary: The Standard Kernel - without any SUSE patches
License: GPL-2.0
Group: System/Kernel
-Version: 5.1.3
+Version: 5.1.4
%if 0%{?is_kotd}
-Release: <RELEASE>.g07d2e25
+Release: <RELEASE>.g0739fa4
%else
Release: 0
%endif
@@ -169,10 +169,10 @@
Conflicts: libc.so.6()(64bit)
%endif
Provides: kernel = %version-%source_rel
-Provides: kernel-%build_flavor-base-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
-Provides: kernel-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: kernel-%build_flavor-base-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
+Provides: kernel-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
# END COMMON DEPS
-Provides: %name-srchash-07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+Provides: %name-srchash-0739fa4bcf7a21941c7e28c52b33b0f531044868
%obsolete_rebuilds %name
Source0: http://www.kernel.org/pub/linux/kernel/v5.x/linux-%srcversion.tar.xz
Source2: source-post.sh
kernel-zfcpdump.spec: same change
++++++ config.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64/default new/config/ppc64/default
--- old/config/ppc64/default 2019-05-14 10:37:17.000000000 +0200
+++ new/config/ppc64/default 2019-05-22 13:11:40.000000000 +0200
@@ -1,10 +1,10 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/powerpc 5.1.1 Kernel Configuration
+# Linux/powerpc 5.1.2 Kernel Configuration
#
#
-# Compiler: powerpc64-suse-linux-gcc (SUSE Linux) 8.3.1 20190226 [gcc-8-branch revision 269204]
+# Compiler: gcc (SUSE Linux) 8.3.1 20190226 [gcc-8-branch revision 269204]
#
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=80301
@@ -2032,62 +2032,7 @@
CONFIG_MISC_RTSX_USB=m
CONFIG_HABANA_AI=m
CONFIG_HAVE_IDE=y
-CONFIG_IDE=y
-
-#
-# Please see Documentation/ide/ide.txt for help/info on IDE drives
-#
-CONFIG_IDE_XFER_MODE=y
-CONFIG_IDE_TIMINGS=y
-CONFIG_IDE_ATAPI=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-CONFIG_IDE_GD_ATA=y
-CONFIG_IDE_GD_ATAPI=y
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-CONFIG_IDE_TASK_IOCTL=y
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_PLATFORM is not set
-CONFIG_BLK_DEV_IDEDMA_SFF=y
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_GENERIC is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_JMICRON is not set
-# CONFIG_BLK_DEV_PIIX is not set
-CONFIG_BLK_DEV_IT8172=m
-# CONFIG_BLK_DEV_IT8213 is not set
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SL82C105 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_BLK_DEV_TC86C001 is not set
-CONFIG_BLK_DEV_IDE_PMAC=y
-CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
-CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDE is not set
#
# SCSI device support
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64le/default new/config/ppc64le/default
--- old/config/ppc64le/default 2019-05-14 10:37:17.000000000 +0200
+++ new/config/ppc64le/default 2019-05-22 13:11:40.000000000 +0200
@@ -1,10 +1,10 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/powerpc 5.1.1 Kernel Configuration
+# Linux/powerpc 5.1.2 Kernel Configuration
#
#
-# Compiler: powerpc64le-suse-linux-gcc (SUSE Linux) 8.3.1 20190226 [gcc-8-branch revision 269204]
+# Compiler: gcc (SUSE Linux) 8.3.1 20190226 [gcc-8-branch revision 269204]
#
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=80301
@@ -1938,59 +1938,7 @@
CONFIG_MISC_RTSX_USB=m
CONFIG_HABANA_AI=m
CONFIG_HAVE_IDE=y
-CONFIG_IDE=y
-
-#
-# Please see Documentation/ide/ide.txt for help/info on IDE drives
-#
-CONFIG_IDE_XFER_MODE=y
-CONFIG_IDE_ATAPI=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-CONFIG_IDE_GD_ATA=y
-CONFIG_IDE_GD_ATAPI=y
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-CONFIG_IDE_TASK_IOCTL=y
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_PLATFORM is not set
-CONFIG_BLK_DEV_IDEDMA_SFF=y
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_PCIBUS_ORDER=y
-# CONFIG_BLK_DEV_GENERIC is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_JMICRON is not set
-# CONFIG_BLK_DEV_PIIX is not set
-CONFIG_BLK_DEV_IT8172=m
-# CONFIG_BLK_DEV_IT8213 is not set
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SL82C105 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_BLK_DEV_TC86C001 is not set
-CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDE is not set
#
# SCSI device support
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/s390x/default new/config/s390x/default
--- old/config/s390x/default 2019-05-14 10:37:17.000000000 +0200
+++ new/config/s390x/default 2019-05-22 13:11:40.000000000 +0200
@@ -615,6 +615,7 @@
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
CONFIG_HAVE_MEMBLOCK_PHYS_MAP=y
+CONFIG_HAVE_GENERIC_GUP=y
CONFIG_MEMORY_ISOLATION=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
CONFIG_MEMORY_HOTPLUG=y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/s390x/zfcpdump new/config/s390x/zfcpdump
--- old/config/s390x/zfcpdump 2019-05-14 10:37:17.000000000 +0200
+++ new/config/s390x/zfcpdump 2019-05-22 13:11:40.000000000 +0200
@@ -504,6 +504,7 @@
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
CONFIG_HAVE_MEMBLOCK_PHYS_MAP=y
+CONFIG_HAVE_GENERIC_GUP=y
CONFIG_MEMORY_ISOLATION=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
# CONFIG_MEMORY_HOTPLUG is not set
++++++ patches.kernel.org.tar.bz2 ++++++
++++ 12045 lines of diff (skipped)
++++++ patches.suse.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/TTY-serial_core-add-install.patch new/patches.suse/TTY-serial_core-add-install.patch
--- old/patches.suse/TTY-serial_core-add-install.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/TTY-serial_core-add-install.patch 2019-05-22 11:07:33.000000000 +0200
@@ -0,0 +1,128 @@
+From: Jiri Slaby <jslaby(a)suse.cz>
+Date: Wed, 17 Apr 2019 10:58:53 +0200
+Subject: TTY: serial_core, add ->install
+Git-commit: 4cdd17ba1dff20ffc99fdbd2e6f0201fc7fe67df
+Patch-mainline: v5.2-rc1
+References: bnc#1129693
+
+We need to compute the uart state only on the first open. This is
+usually what is done in the ->install hook. serial_core used to do this
+in ->open on every open. So move it to ->install.
+
+As a side effect, it ensures the state is set properly in the window
+after tty_init_dev is called, but before uart_open. This fixes a bunch
+of races between tty_open and flush_to_ldisc we were dealing with
+recently.
+
+One of such bugs was attempted to fix in commit fedb5760648a (serial:
+fix race between flush_to_ldisc and tty_open), but it only took care of
+a couple of functions (uart_start and uart_unthrottle). I was able to
+reproduce the crash on a SLE system, but in uart_write_room which is
+also called from flush_to_ldisc via process_echoes. I was *unable* to
+reproduce the bug locally. It is due to having this patch in my queue
+since 2012!
+
+ general protection fault: 0000 [#1] SMP KASAN PTI
+ CPU: 1 PID: 5 Comm: kworker/u4:0 Tainted: G L 4.12.14-396-default #1 SLE15-SP1 (unreleased)
+ Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-0-ga698c89-prebuilt.qemu.org 04/01/2014
+ Workqueue: events_unbound flush_to_ldisc
+ task: ffff8800427d8040 task.stack: ffff8800427f0000
+ RIP: 0010:uart_write_room+0xc4/0x590
+ RSP: 0018:ffff8800427f7088 EFLAGS: 00010202
+ RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000
+ RDX: 000000000000002f RSI: 00000000000000ee RDI: ffff88003888bd90
+ RBP: ffffffffb9545850 R08: 0000000000000001 R09: 0000000000000400
+ R10: ffff8800427d825c R11: 000000000000006e R12: 1ffff100084fee12
+ R13: ffffc900004c5000 R14: ffff88003888bb28 R15: 0000000000000178
+ FS: 0000000000000000(0000) GS:ffff880043300000(0000) knlGS:0000000000000000
+ CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+ CR2: 0000561da0794148 CR3: 000000000ebf4000 CR4: 00000000000006e0
+ Call Trace:
+ tty_write_room+0x6d/0xc0
+ __process_echoes+0x55/0x870
+ n_tty_receive_buf_common+0x105e/0x26d0
+ tty_ldisc_receive_buf+0xb7/0x1c0
+ tty_port_default_receive_buf+0x107/0x180
+ flush_to_ldisc+0x35d/0x5c0
+...
+
+0 in rbx means tty->driver_data is NULL in uart_write_room. 0x178 is
+tried to be dereferenced (0x178 >> 3 is 0x2f in rdx) at
+uart_write_room+0xc4. 0x178 is exactly (struct uart_state *)NULL->refcount
+used in uart_port_lock from uart_write_room.
+
+So revert the upstream commit here as my local patch should fix the
+whole family.
+
+Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
+Cc: Li RongQing <lirongqing(a)baidu.com>
+Cc: Wang Li <wangli39(a)baidu.com>
+Cc: Zhang Yu <zhangyu31(a)baidu.com>
+Cc: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
+Cc: stable <stable(a)vger.kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
+---
+ drivers/tty/serial/serial_core.c | 24 +++++++++++++-----------
+ 1 file changed, 13 insertions(+), 11 deletions(-)
+
+--- a/drivers/tty/serial/serial_core.c
++++ b/drivers/tty/serial/serial_core.c
+@@ -130,9 +130,6 @@ static void uart_start(struct tty_struct
+ struct uart_port *port;
+ unsigned long flags;
+
+- if (!state)
+- return;
+-
+ port = uart_port_lock(state, flags);
+ __uart_start(tty);
+ uart_port_unlock(port, flags);
+@@ -730,9 +727,6 @@ static void uart_unthrottle(struct tty_s
+ upstat_t mask = UPSTAT_SYNC_FIFO;
+ struct uart_port *port;
+
+- if (!state)
+- return;
+-
+ port = uart_port_ref(state);
+ if (!port)
+ return;
+@@ -1747,6 +1741,16 @@ static void uart_dtr_rts(struct tty_port
+ uart_port_deref(uport);
+ }
+
++static int uart_install(struct tty_driver *driver, struct tty_struct *tty)
++{
++ struct uart_driver *drv = driver->driver_state;
++ struct uart_state *state = drv->state + tty->index;
++
++ tty->driver_data = state;
++
++ return tty_standard_install(driver, tty);
++}
++
+ /*
+ * Calls to uart_open are serialised by the tty_lock in
+ * drivers/tty/tty_io.c:tty_open()
+@@ -1759,11 +1763,8 @@ static void uart_dtr_rts(struct tty_port
+ */
+ static int uart_open(struct tty_struct *tty, struct file *filp)
+ {
+- struct uart_driver *drv = tty->driver->driver_state;
+- int retval, line = tty->index;
+- struct uart_state *state = drv->state + line;
+-
+- tty->driver_data = state;
++ struct uart_state *state = tty->driver_data;
++ int retval;
+
+ retval = tty_port_open(&state->port, tty, filp);
+ if (retval > 0)
+@@ -2448,6 +2449,7 @@ static void uart_poll_put_char(struct tt
+ #endif
+
+ static const struct tty_operations uart_ops = {
++ .install = uart_install,
+ .open = uart_open,
+ .close = uart_close,
+ .write = uart_write,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/dm-make-sure-to-obey-max_io_len_target_boundary.patch new/patches.suse/dm-make-sure-to-obey-max_io_len_target_boundary.patch
--- old/patches.suse/dm-make-sure-to-obey-max_io_len_target_boundary.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/dm-make-sure-to-obey-max_io_len_target_boundary.patch 2019-05-22 11:07:33.000000000 +0200
@@ -0,0 +1,47 @@
+From: Michael Lass <bevan(a)bi-co.net>
+Date: Tue, 21 May 2019 21:58:07 +0200
+Subject: dm: make sure to obey max_io_len_target_boundary
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git#fo…
+Git-commit: 51b86f9a8d1c4bb4e3862ee4b4c5f46072f7520d
+Patch-mainline: Queued in subsystem maintainer repository
+References: bnc#1135868
+
+Commit 61697a6abd24 ("dm: eliminate 'split_discard_bios' flag from DM
+target interface") incorrectly removed code from
+__send_changing_extent_only() that is required to impose a per-target IO
+boundary on IO that exceeds max_io_len_target_boundary(). Otherwise
+"special" IO (e.g. DISCARD, WRITE SAME, WRITE ZEROES) can write beyond
+where allowed.
+
+Fix this by restoring the max_io_len_target_boundary() limit in
+__send_changing_extent_only()
+
+Fixes: 61697a6abd24 ("dm: eliminate 'split_discard_bios' flag from DM target interface")
+Cc: stable(a)vger.kernel.org # 5.1+
+Signed-off-by: Michael Lass <bevan(a)bi-co.net>
+Signed-off-by: Mike Snitzer <snitzer(a)redhat.com>
+Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
+---
+ drivers/md/dm.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/md/dm.c
++++ b/drivers/md/dm.c
+@@ -1483,7 +1483,7 @@ static unsigned get_num_write_zeroes_bio
+ static int __send_changing_extent_only(struct clone_info *ci, struct dm_target *ti,
+ unsigned num_bios)
+ {
+- unsigned len = ci->sector_count;
++ unsigned len;
+
+ /*
+ * Even though the device advertised support for this type of
+@@ -1494,6 +1494,8 @@ static int __send_changing_extent_only(s
+ if (!num_bios)
+ return -EOPNOTSUPP;
+
++ len = min((sector_t)ci->sector_count, max_io_len_target_boundary(ci->sector, ti));
++
+ __send_duplicate_bios(ci, ti, num_bios, &len);
+
+ ci->sector += len;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/memcg-make-it-work-on-sparse-non-0-node-systems.patch new/patches.suse/memcg-make-it-work-on-sparse-non-0-node-systems.patch
--- old/patches.suse/memcg-make-it-work-on-sparse-non-0-node-systems.patch 2019-05-17 06:54:29.000000000 +0200
+++ new/patches.suse/memcg-make-it-work-on-sparse-non-0-node-systems.patch 2019-05-22 11:07:33.000000000 +0200
@@ -1,7 +1,7 @@
From: Jiri Slaby <jslaby(a)suse.cz>
Date: Mon, 29 Apr 2019 12:39:10 +0200
Subject: memcg: make it work on sparse non-0-node systems
-Patch-mainline: submitted on 2019/04/29
+Patch-mainline: submitted on 2019/05/17
References: bnc#1133616
We have a single node system with node 0 disabled:
@@ -36,21 +36,36 @@
The test in list_lru_memcg_aware is broken: it assumes node 0 is always
present, but it is not true on some systems as can be seen above.
-So fix this by checking the first online node instead of node 0.
+So fix this by avoiding checks on node 0. Remember the memcg-awareness
+by a bool flag in struct list_lru.
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
Cc: Johannes Weiner <hannes(a)cmpxchg.org>
Cc: Michal Hocko <mhocko(a)kernel.org>
-Cc: Vladimir Davydov <vdavydov.dev(a)gmail.com>
+Suggested-by: Vladimir Davydov <vdavydov.dev(a)gmail.com>
+Acked-by: Vladimir Davydov <vdavydov.dev(a)gmail.com>
Cc: <cgroups(a)vger.kernel.org>
Cc: <linux-mm(a)kvack.org>
Cc: Raghavendra K T <raghavendra.kt(a)linux.vnet.ibm.com>
---
- mm/list_lru.c | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
+ include/linux/list_lru.h | 1 +
+ mm/list_lru.c | 8 +++-----
+ 2 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/include/linux/list_lru.h b/include/linux/list_lru.h
+index aa5efd9351eb..d5ceb2839a2d 100644
+--- a/include/linux/list_lru.h
++++ b/include/linux/list_lru.h
+@@ -54,6 +54,7 @@ struct list_lru {
+ #ifdef CONFIG_MEMCG_KMEM
+ struct list_head list;
+ int shrinker_id;
++ bool memcg_aware;
+ #endif
+ };
+
diff --git a/mm/list_lru.c b/mm/list_lru.c
-index 0730bf8ff39f..7689910f1a91 100644
+index 0730bf8ff39f..d3b538146efd 100644
--- a/mm/list_lru.c
+++ b/mm/list_lru.c
@@ -37,11 +37,7 @@ static int lru_shrinker_id(struct list_lru *lru)
@@ -62,10 +77,19 @@
- * in the systems supporting sparse numa ids.
- */
- return !!lru->node[0].memcg_lrus;
-+ return !!lru->node[first_online_node].memcg_lrus;
++ return lru->memcg_aware;
}
static inline struct list_lru_one *
+@@ -451,6 +447,8 @@ static int memcg_init_list_lru(struct list_lru *lru, bool memcg_aware)
+ {
+ int i;
+
++ lru->memcg_aware = memcg_aware;
++
+ if (!memcg_aware)
+ return 0;
+
--
2.21.0
++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:31.861404210 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:31.861404210 +0200
@@ -130,6 +130,132 @@
patches.kernel.org/5.1.3-042-PCI-hv-Add-pci_destroy_slot-in-pci_devices_pre…
patches.kernel.org/5.1.3-043-f2fs-Fix-use-of-number-of-devices.patch
patches.kernel.org/5.1.3-044-Linux-5.1.3.patch
+ patches.kernel.org/5.1.4-001-locking-rwsem-Prevent-decrement-of-reader-coun…
+ patches.kernel.org/5.1.4-002-x86-speculation-mds-Revert-CPU-buffer-clear-on…
+ patches.kernel.org/5.1.4-003-x86-speculation-mds-Improve-CPU-buffer-clear-d…
+ patches.kernel.org/5.1.4-004-objtool-Fix-function-fallthrough-detection.pat…
+ patches.kernel.org/5.1.4-005-arm64-dts-rockchip-fix-IO-domain-voltage-setti…
+ patches.kernel.org/5.1.4-006-arm64-dts-rockchip-Disable-DCMDs-on-RK3399-s-e…
+ patches.kernel.org/5.1.4-007-ARM-dts-qcom-ipq4019-enlarge-PCIe-BAR-range.pa…
+ patches.kernel.org/5.1.4-008-ARM-dts-exynos-Fix-interrupt-for-shared-EINTs-…
+ patches.kernel.org/5.1.4-009-ARM-dts-exynos-Fix-audio-routing-on-Odroid-XU3…
+ patches.kernel.org/5.1.4-010-ARM-dts-exynos-Fix-audio-microphone-routing-on…
+ patches.kernel.org/5.1.4-011-mmc-sdhci-of-arasan-Add-DTS-property-to-disabl…
+ patches.kernel.org/5.1.4-012-ARM-exynos-Fix-a-leaked-reference-by-adding-mi…
+ patches.kernel.org/5.1.4-013-power-supply-axp288_charger-Fix-unchecked-retu…
+ patches.kernel.org/5.1.4-014-power-supply-axp288_fuel_gauge-Add-ACEPC-T8-an…
+ patches.kernel.org/5.1.4-015-arm64-mmap-Ensure-file-offset-is-treated-as-un…
+ patches.kernel.org/5.1.4-016-arm64-arch_timer-Ensure-counter-register-reads…
+ patches.kernel.org/5.1.4-017-arm64-compat-Reduce-address-limit.patch
+ patches.kernel.org/5.1.4-018-arm64-Clear-OSDLR_EL1-on-CPU-boot.patch
+ patches.kernel.org/5.1.4-019-arm64-Save-and-restore-OSDLR_EL1-across-suspen…
+ patches.kernel.org/5.1.4-020-sched-x86-Save-ER-FLAGS-on-context-switch.patch
+ patches.kernel.org/5.1.4-021-x86-MCE-Add-an-MCE-record-filtering-function.p…
+ patches.kernel.org/5.1.4-022-x86-MCE-AMD-Don-t-report-L1-BTB-MCA-errors-on-…
+ patches.kernel.org/5.1.4-023-crypto-crypto4xx-fix-ctr-aes-missing-output-IV…
+ patches.kernel.org/5.1.4-024-crypto-crypto4xx-fix-cfb-and-ofb-overran-dst-b…
+ patches.kernel.org/5.1.4-025-crypto-salsa20-don-t-access-already-freed-walk…
+ patches.kernel.org/5.1.4-026-crypto-lrw-don-t-access-already-freed-walk.iv.…
+ patches.kernel.org/5.1.4-027-crypto-chacha-generic-fix-use-as-arm64-no-NEON…
+ patches.kernel.org/5.1.4-028-crypto-chacha20poly1305-set-cra_name-correctly…
+ patches.kernel.org/5.1.4-029-crypto-ccm-fix-incompatibility-between-ccm-and…
+ patches.kernel.org/5.1.4-030-crypto-ccp-Do-not-free-psp_master-when-PLATFOR…
+ patches.kernel.org/5.1.4-031-crypto-vmx-fix-copy-paste-error-in-CTR-mode.pa…
+ patches.kernel.org/5.1.4-032-crypto-skcipher-don-t-WARN-on-unprocessed-data…
+ patches.kernel.org/5.1.4-033-crypto-crct10dif-generic-fix-use-via-crypto_sh…
+ patches.kernel.org/5.1.4-034-crypto-x86-crct10dif-pcl-fix-use-via-crypto_sh…
+ patches.kernel.org/5.1.4-035-crypto-arm64-gcm-aes-ce-fix-no-NEON-fallback-c…
+ patches.kernel.org/5.1.4-036-crypto-gcm-fix-incompatibility-between-gcm-and…
+ patches.kernel.org/5.1.4-037-crypto-rockchip-update-IV-buffer-to-contain-th…
+ patches.kernel.org/5.1.4-038-crypto-caam-qi2-fix-zero-length-buffer-DMA-map…
+ patches.kernel.org/5.1.4-039-crypto-caam-qi2-fix-DMA-mapping-of-stack-memor…
+ patches.kernel.org/5.1.4-040-crypto-caam-qi2-generate-hash-keys-in-place.pa…
+ patches.kernel.org/5.1.4-041-crypto-arm-aes-neonbs-don-t-access-already-fre…
+ patches.kernel.org/5.1.4-042-crypto-arm64-aes-neonbs-don-t-access-already-f…
+ patches.kernel.org/5.1.4-043-drivers-dax-Allow-to-include-DEV_DAX_PMEM-as-b…
+ patches.kernel.org/5.1.4-044-dt-bindings-mmc-Add-disable-cqe-dcmd-property.…
+ patches.kernel.org/5.1.4-045-mmc-tegra-fix-ddr-signaling-for-non-ddr-modes.…
+ patches.kernel.org/5.1.4-046-mmc-core-Fix-tag-set-memory-leak.patch
+ patches.kernel.org/5.1.4-047-mmc-sdhci-pci-Fix-BYT-OCP-setting.patch
+ patches.kernel.org/5.1.4-048-ALSA-line6-toneport-Fix-broken-usage-of-timer-…
+ patches.kernel.org/5.1.4-049-ALSA-usb-audio-Fix-a-memory-leak-bug.patch
+ patches.kernel.org/5.1.4-050-ALSA-hda-hdmi-Read-the-pin-sense-from-register…
+ patches.kernel.org/5.1.4-051-ALSA-hda-hdmi-Consider-eld_valid-when-reportin…
+ patches.kernel.org/5.1.4-052-ALSA-hda-realtek-EAPD-turn-on-later.patch
+ patches.kernel.org/5.1.4-053-ALSA-hdea-realtek-Headset-fixup-for-System76-G…
+ patches.kernel.org/5.1.4-054-ASoC-max98090-Fix-restore-of-DAPM-Muxes.patch
+ patches.kernel.org/5.1.4-055-ASoC-RT5677-SPI-Disable-16Bit-SPI-Transfers.pa…
+ patches.kernel.org/5.1.4-056-ASoC-fsl_esai-Fix-missing-break-in-switch-stat…
+ patches.kernel.org/5.1.4-057-ASoC-codec-hdac_hdmi-add-device_link-to-card-d…
+ patches.kernel.org/5.1.4-058-bpf-arm64-remove-prefetch-insn-in-xadd-mapping…
+ patches.kernel.org/5.1.4-059-bpf-fix-out-of-bounds-backwards-jmps-due-to-de…
+ patches.kernel.org/5.1.4-060-crypto-ccree-remove-special-handling-of-chaine…
+ patches.kernel.org/5.1.4-061-crypto-ccree-fix-mem-leak-on-error-path.patch
+ patches.kernel.org/5.1.4-062-crypto-ccree-don-t-map-MAC-key-on-stack.patch
+ patches.kernel.org/5.1.4-063-crypto-ccree-use-correct-internal-state-sizes-…
+ patches.kernel.org/5.1.4-064-crypto-ccree-don-t-map-AEAD-key-and-IV-on-stac…
+ patches.kernel.org/5.1.4-065-crypto-ccree-pm-resume-first-enable-the-source…
+ patches.kernel.org/5.1.4-066-crypto-ccree-HOST_POWER_DOWN_EN-should-be-the-…
+ patches.kernel.org/5.1.4-067-crypto-ccree-add-function-to-handle-cryptocell…
+ patches.kernel.org/5.1.4-068-crypto-ccree-handle-tee-fips-error-during-powe…
+ patches.kernel.org/5.1.4-069-mm-mincore.c-make-mincore-more-conservative.pa…
+ patches.kernel.org/5.1.4-070-mm-huge_memory-fix-vmf_insert_pfn_-pmd-pud-cra…
+ patches.kernel.org/5.1.4-071-mm-hugetlb.c-don-t-put_page-in-lock-of-hugetlb…
+ patches.kernel.org/5.1.4-072-hugetlb-use-same-fault-hash-key-for-shared-and…
+ patches.kernel.org/5.1.4-073-ocfs2-fix-ocfs2-read-inode-data-panic-in-ocfs2…
+ patches.kernel.org/5.1.4-074-userfaultfd-use-RCU-to-free-the-task-struct-wh…
+ patches.kernel.org/5.1.4-075-ACPI-PM-Set-enable_for_wake-for-wakeup-GPEs-du…
+ patches.kernel.org/5.1.4-076-ACPICA-Linux-move-ACPI_DEBUG_DEFAULT-flag-out-…
+ patches.kernel.org/5.1.4-077-mfd-da9063-Fix-OTP-control-register-names-to-m…
+ patches.kernel.org/5.1.4-078-mfd-max77620-Fix-swapped-FPS_PERIOD_MAX_US-val…
+ patches.kernel.org/5.1.4-079-mtd-spi-nor-intel-spi-Avoid-crossing-4K-addres…
+ patches.kernel.org/5.1.4-080-mtd-maps-physmap-Store-gpio_values-correctly.p…
+ patches.kernel.org/5.1.4-081-mtd-maps-Allow-MTD_PHYSMAP-with-MTD_RAM.patch
+ patches.kernel.org/5.1.4-082-tty-vt.c-Fix-TIOCL_BLANKSCREEN-console-blankin…
+ patches.kernel.org/5.1.4-083-tty-vt-fix-write-write-race-in-ioctl-KDSKBSENT…
+ patches.kernel.org/5.1.4-084-jbd2-check-superblock-mapped-prior-to-committi…
+ patches.kernel.org/5.1.4-085-ext4-make-sanity-check-in-mballoc-more-strict.…
+ patches.kernel.org/5.1.4-086-ext4-ignore-e_value_offs-for-xattrs-with-value…
+ patches.kernel.org/5.1.4-087-ext4-avoid-drop-reference-to-iloc.bh-twice.pat…
+ patches.kernel.org/5.1.4-088-ext4-fix-use-after-free-race-with-debug_want_e…
+ patches.kernel.org/5.1.4-089-ext4-actually-request-zeroing-of-inode-table-a…
+ patches.kernel.org/5.1.4-090-ext4-fix-ext4_show_options-for-file-systems-w-…
+ patches.kernel.org/5.1.4-091-btrfs-Check-the-first-key-and-level-for-cached…
+ patches.kernel.org/5.1.4-092-btrfs-Correctly-free-extent-buffer-in-case-btr…
+ patches.kernel.org/5.1.4-093-btrfs-Honour-FITRIM-range-constraints-during-f…
+ patches.kernel.org/5.1.4-094-Btrfs-send-flush-dellaloc-in-order-to-avoid-da…
+ patches.kernel.org/5.1.4-095-Btrfs-do-not-start-a-transaction-during-fiemap…
+ patches.kernel.org/5.1.4-096-Btrfs-do-not-start-a-transaction-at-iterate_ex…
+ patches.kernel.org/5.1.4-097-Btrfs-fix-race-between-send-and-deduplication-…
+ patches.kernel.org/5.1.4-098-bcache-fix-a-race-between-cache-register-and-c…
+ patches.kernel.org/5.1.4-099-bcache-never-set-KEY_PTRS-of-journal-key-to-0-…
+ patches.kernel.org/5.1.4-100-ipmi-Add-the-i2c-addr-property-for-SSIF-interf…
+ patches.kernel.org/5.1.4-101-ipmi-ssif-compare-block-number-correctly-for-m…
+ patches.kernel.org/5.1.4-102-ARM-dts-imx-Fix-the-AR803X-phy-mode.patch
+ patches.kernel.org/5.1.4-103-mm-compaction.c-correct-zone-boundary-handling…
+ patches.kernel.org/5.1.4-104-fs-writeback.c-use-rcu_barrier-to-wait-for-inf…
+ patches.kernel.org/5.1.4-105-tty-Don-t-force-RISCV-SBI-console-as-preferred…
+ patches.kernel.org/5.1.4-106-ext4-zero-out-the-unused-memory-region-in-the-…
+ patches.kernel.org/5.1.4-107-ext4-fix-data-corruption-caused-by-overlapping…
+ patches.kernel.org/5.1.4-108-ext4-fix-use-after-free-in-dx_release.patch
+ patches.kernel.org/5.1.4-109-ext4-avoid-panic-during-forced-reboot-due-to-a…
+ patches.kernel.org/5.1.4-110-ALSA-hda-realtek-Corrected-fixup-for-System76-…
+ patches.kernel.org/5.1.4-111-ALSA-hda-realtek-Fixup-headphone-noise-via-run…
+ patches.kernel.org/5.1.4-112-ALSA-hda-realtek-Fix-for-Lenovo-B50-70-inverte…
+ patches.kernel.org/5.1.4-113-jbd2-fix-potential-double-free.patch
+ patches.kernel.org/5.1.4-114-Revert-KVM-nVMX-Expose-RDPMC-exiting-only-when…
+ patches.kernel.org/5.1.4-115-KVM-Fix-the-bitmap-range-to-copy-during-clear-…
+ patches.kernel.org/5.1.4-116-KVM-x86-Skip-EFER-vs.-guest-CPUID-checks-for-h…
+ patches.kernel.org/5.1.4-117-KVM-lapic-Busy-wait-for-timer-to-expire-when-u…
+ patches.kernel.org/5.1.4-118-smb3-display-session-id-in-debug-data.patch
+ patches.kernel.org/5.1.4-119-kbuild-turn-auto.conf.cmd-into-a-mandatory-inc…
+ patches.kernel.org/5.1.4-120-xen-pvh-set-xen_domain_type-to-HVM-in-xen_pvh_…
+ patches.kernel.org/5.1.4-121-xen-pvh-correctly-setup-the-PV-EFI-interface-f…
+ patches.kernel.org/5.1.4-122-powerpc-32s-fix-flush_hash_pages-on-SMP.patch
+ patches.kernel.org/5.1.4-123-libnvdimm-namespace-Fix-label-tracking-error.p…
+ patches.kernel.org/5.1.4-124-s390-mm-make-the-pxd_offset-functions-more-rob…
+ patches.kernel.org/5.1.4-125-s390-mm-convert-to-the-generic-get_user_pages_…
+ patches.kernel.org/5.1.4-126-Linux-5.1.4.patch
########################################################
# Build fixes that apply to the vanilla kernel too.
@@ -437,6 +563,7 @@
########################################################
# Char / serial
########################################################
+ patches.suse/TTY-serial_core-add-install.patch
########################################################
# Other driver fixes
@@ -457,6 +584,7 @@
patches.suse/dm-mpath-leastpending-path-update
patches.suse/dm-table-switch-to-readonly
patches.suse/dm-mpath-no-partitions-feature
+ patches.suse/dm-make-sure-to-obey-max_io_len_target_boundary.patch
########################################################
# md
++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.OZaLZ6/_old 2019-05-24 11:31:31.901404200 +0200
+++ /var/tmp/diff_new_pack.OZaLZ6/_new 2019-05-24 11:31:31.909404198 +0200
@@ -1,3 +1,3 @@
-2019-05-17 04:54:29 +0000
-GIT Revision: 07d2e253d2b388efd4d1cced9cc6fa3746f2ef78
+2019-05-22 11:11:40 +0000
+GIT Revision: 0739fa4bcf7a21941c7e28c52b33b0f531044868
GIT Branch: stable
1
0
Hello community,
here is the log from the commit of package python-jsbeautifier for openSUSE:Factory checked in at 2019-05-24 11:31:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jsbeautifier (Old)
and /work/SRC/openSUSE:Factory/.python-jsbeautifier.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jsbeautifier"
Fri May 24 11:31:06 2019 rev:3 rq:704824 version:1.10.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jsbeautifier/python-jsbeautifier.changes 2018-12-24 11:38:38.953598140 +0100
+++ /work/SRC/openSUSE:Factory/.python-jsbeautifier.new.5148/python-jsbeautifier.changes 2019-05-24 11:31:10.821409629 +0200
@@ -1,0 +2,10 @@
+Wed May 22 14:13:04 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 1.10.0
+ * lot of releases, lot of changes, see
+ https://github.com/beautify-web/js-beautify/blob/master/CHANGELOG.md
+- added sources
+ https://github.com/beautify-web/js-beautify/issues/1674
+ + LICENSE
+
+-------------------------------------------------------------------
Old:
----
jsbeautifier-1.6.14.tar.gz
New:
----
LICENSE
jsbeautifier-1.10.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jsbeautifier.spec ++++++
--- /var/tmp/diff_new_pack.5jBlZG/_old 2019-05-24 11:31:11.473409461 +0200
+++ /var/tmp/diff_new_pack.5jBlZG/_new 2019-05-24 11:31:11.477409461 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jsbeautifier
#
-# Copyright (c) 2018 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
@@ -17,24 +17,26 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%bcond_without test
Name: python-jsbeautifier
-Version: 1.6.14
+Version: 1.10.0
Release: 0
Summary: JavaScript unobfuscator and beautifier
License: MIT
Group: Development/Languages/Python
Url: http://jsbeautifier.org
-Source: https://files.pythonhosted.org/packages/source/j/jsbeautifier/jsbeautifier-…
+Source0: https://files.pythonhosted.org/packages/source/j/jsbeautifier/jsbeautifier-…
+# https://github.com/beautify-web/js-beautify/issues/1674
+Source1: https://raw.githubusercontent.com/beautify-web/js-beautify/master/LICENSE
BuildRequires: %{python_module setuptools}
BuildRequires: python-rpm-macros
-%if %{with test}
+# SECTION test requirements
BuildRequires: %{python_module EditorConfig >= 0.12.0}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module six >= 1.6.1}
-%endif
+# /SECTION
BuildRequires: fdupes
Requires: python-EditorConfig >= 0.12.0
+Requires: python-setuptools
Requires: python-six >= 1.6.1
BuildArch: noarch
@@ -45,28 +47,21 @@
%prep
%setup -q -n jsbeautifier-%{version}
+cp %{SOURCE1} .
%build
%python_build
%install
%python_install
-%{python_expand chmod a+x %{buildroot}%{$python_sitelib}/jsbeautifier/tests/test-perf-jsbeautifier.py
-chmod a+x %{buildroot}%{$python_sitelib}/jsbeautifier/tests/generated/tests.py
-sed -i "s|^#!/usr/bin/env python$|#!%__$python|" %{buildroot}%{$python_sitelib}/jsbeautifier/tests/test-perf-jsbeautifier.py
-sed -i "s|^#!/usr/bin/env python$|#!%__$python|" %{buildroot}%{$python_sitelib}/jsbeautifier/tests/generated/tests.py
-$python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/jsbeautifier/tests/
-$python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/jsbeautifier/tests/
-%fdupes %{buildroot}%{$python_sitelib}
-}
+%{python_expand %fdupes %{buildroot}%{$python_sitelib}}
-%if %{with test}
%check
%python_exec setup.py test
-%endif
%files %{python_files}
%defattr(-,root,root,-)
+%license LICENSE
%python3_only %{_bindir}/js-beautify
%{python_sitelib}/jsbeautifier
%{python_sitelib}/jsbeautifier-%{version}-py*.egg-info
++++++ LICENSE ++++++
The MIT License (MIT)
Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++++++ jsbeautifier-1.6.14.tar.gz -> jsbeautifier-1.10.0.tar.gz ++++++
++++ 12566 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-validators for openSUSE:Factory checked in at 2019-05-24 11:31:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-validators (Old)
and /work/SRC/openSUSE:Factory/.python-validators.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-validators"
Fri May 24 11:31:01 2019 rev:5 rq:704822 version:0.12.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-validators/python-validators.changes 2019-04-17 10:10:38.626931699 +0200
+++ /work/SRC/openSUSE:Factory/.python-validators.new.5148/python-validators.changes 2019-05-24 11:31:02.497411774 +0200
@@ -1,0 +2,6 @@
+Wed May 22 15:16:16 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 0.12.6
+ * Fixed domain validator for single character domains
+
+-------------------------------------------------------------------
Old:
----
validators-0.12.5.tar.gz
New:
----
validators-0.12.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-validators.spec ++++++
--- /var/tmp/diff_new_pack.Fq4Zxi/_old 2019-05-24 11:31:03.369411549 +0200
+++ /var/tmp/diff_new_pack.Fq4Zxi/_new 2019-05-24 11:31:03.373411548 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-validators
-Version: 0.12.5
+Version: 0.12.6
Release: 0
Summary: Python Data Validation
License: MIT
@@ -54,7 +54,7 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-%python_expand py.test-%{$python_bin_suffix}
+%pytest
%files %{python_files}
%doc CHANGES.rst README.rst
++++++ validators-0.12.5.tar.gz -> validators-0.12.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/validators-0.12.5/CHANGES.rst new/validators-0.12.6/CHANGES.rst
--- old/validators-0.12.5/CHANGES.rst 2019-04-15 13:22:27.000000000 +0200
+++ new/validators-0.12.6/CHANGES.rst 2019-05-08 08:47:31.000000000 +0200
@@ -2,6 +2,12 @@
---------
+0.12.6 (2019-05-08)
+^^^^^^^^^^^^^^^^^^^
+
+- Fixed domain validator for single character domains (#118, pull request courtesy kingbuzzman)
+
+
0.12.5 (2019-04-15)
^^^^^^^^^^^^^^^^^^^
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/validators-0.12.5/PKG-INFO new/validators-0.12.6/PKG-INFO
--- old/validators-0.12.5/PKG-INFO 2019-04-15 13:28:25.000000000 +0200
+++ new/validators-0.12.6/PKG-INFO 2019-05-08 08:49:11.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: validators
-Version: 0.12.5
+Version: 0.12.6
Summary: Python Data Validation for Humans™.
Home-page: https://github.com/kvesteri/validators
Author: Konsta Vesterinen
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/validators-0.12.5/tests/test_domain.py new/validators-0.12.6/tests/test_domain.py
--- old/validators-0.12.5/tests/test_domain.py 2018-06-03 12:00:00.000000000 +0200
+++ new/validators-0.12.6/tests/test_domain.py 2019-05-08 08:46:23.000000000 +0200
@@ -10,6 +10,9 @@
'underscore_subdomain.example.com',
'something.versicherung',
'11.com',
+ '3.cn',
+ 'a.cn',
+ 'sub1.sub2.sample.co.uk',
'somerandomexample.xn--fiqs8s'
])
def test_returns_true_on_valid_domain(value):
@@ -22,6 +25,9 @@
'example.-com',
'example.',
'-example.com',
+ 'example-.com',
+ '_example.com',
+ 'example_.com',
'example',
'a......b.com'
])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/validators-0.12.5/validators/__init__.py new/validators-0.12.6/validators/__init__.py
--- old/validators-0.12.5/validators/__init__.py 2019-04-15 13:22:37.000000000 +0200
+++ new/validators-0.12.6/validators/__init__.py 2019-05-08 08:47:35.000000000 +0200
@@ -14,4 +14,4 @@
from .utils import ValidationFailure, validator # noqa
from .uuid import uuid # noqa
-__version__ = '0.12.5'
+__version__ = '0.12.6'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/validators-0.12.5/validators/domain.py new/validators-0.12.6/validators/domain.py
--- old/validators-0.12.5/validators/domain.py 2018-06-03 12:00:00.000000000 +0200
+++ new/validators-0.12.6/validators/domain.py 2019-05-08 08:46:23.000000000 +0200
@@ -3,10 +3,10 @@
from .utils import validator
pattern = re.compile(
- r'^(:?(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|' # domain pt.1
- r'([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|' # domain pt.2
- r'([a-zA-Z0-9][-_a-zA-Z0-9]{0,61}[a-zA-Z0-9]))\.)+' # domain pt.3
- r'([a-zA-Z]{2,13}|(xn--[a-zA-Z0-9]{2,30}))$' # TLD
+ r'^(?:[a-z0-9]' # First character of the domain
+ r'(?:[a-z0-9-_]{0,61}[a-z0-9])?\.)' # Sub domain + hostname
+ r'+[a-z0-9][a-z0-9-_]{0,61}' # First 61 characters of the gTLD
+ r'[a-z0-9]$' # Last character of the gTLD
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/validators-0.12.5/validators.egg-info/PKG-INFO new/validators-0.12.6/validators.egg-info/PKG-INFO
--- old/validators-0.12.5/validators.egg-info/PKG-INFO 2019-04-15 13:28:24.000000000 +0200
+++ new/validators-0.12.6/validators.egg-info/PKG-INFO 2019-05-08 08:49:11.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: validators
-Version: 0.12.5
+Version: 0.12.6
Summary: Python Data Validation for Humans™.
Home-page: https://github.com/kvesteri/validators
Author: Konsta Vesterinen
1
0
Hello community,
here is the log from the commit of package eolie for openSUSE:Factory checked in at 2019-05-24 11:30:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/eolie (Old)
and /work/SRC/openSUSE:Factory/.eolie.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "eolie"
Fri May 24 11:30:58 2019 rev:15 rq:704814 version:0.9.62
Changes:
--------
--- /work/SRC/openSUSE:Factory/eolie/eolie.changes 2019-05-02 19:20:44.413751630 +0200
+++ /work/SRC/openSUSE:Factory/.eolie.new.5148/eolie.changes 2019-05-24 11:30:59.669412502 +0200
@@ -1,0 +2,6 @@
+Tue May 21 20:04:19 UTC 2019 - Antoine Belvire <antoine.belvire(a)opensuse.org>
+
+- Update to version 0.9.62:
+ * Bug fixes.
+
+-------------------------------------------------------------------
Old:
----
eolie-0.9.61.tar.xz
New:
----
eolie-0.9.62.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ eolie.spec ++++++
--- /var/tmp/diff_new_pack.pv1H1H/_old 2019-05-24 11:31:00.453412300 +0200
+++ /var/tmp/diff_new_pack.pv1H1H/_new 2019-05-24 11:31:00.457412299 +0200
@@ -20,7 +20,7 @@
%global __requires_exclude typelib\\(Unity\\)
Name: eolie
-Version: 0.9.61
+Version: 0.9.62
Release: 0
Summary: Web browser for GNOME
License: GPL-3.0-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.pv1H1H/_old 2019-05-24 11:31:00.497412289 +0200
+++ /var/tmp/diff_new_pack.pv1H1H/_new 2019-05-24 11:31:00.501412288 +0200
@@ -1,6 +1,6 @@
<services>
<service mode="disabled" name="tar_scm">
- <param name="revision">0.9.61</param>
+ <param name="revision">0.9.62</param>
<param name="scm">git</param>
<param name="url">https://gitlab.gnome.org/World/eolie.git</param>
<param name="versionformat">@PARENT_TAG@</param>
++++++ eolie-0.9.61.tar.xz -> eolie-0.9.62.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/data/org.gnome.Eolie.appdata.xml.in new/eolie-0.9.62/data/org.gnome.Eolie.appdata.xml.in
--- old/eolie-0.9.61/data/org.gnome.Eolie.appdata.xml.in 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/data/org.gnome.Eolie.appdata.xml.in 2019-05-21 21:33:37.000000000 +0200
@@ -10,11 +10,10 @@
<p>Eolie is a new GNOME web browser.</p>
</description>
<releases>
- <release version="0.9.61" date="2019-05-01">
+ <release version="0.9.62" date="2019-05-21">
<description>
<ul>
- <li>Enable 2 factor auth for Firefox sync</li>
- <li>Disable hw acceleration (like in Epiphany)</li>
+ <li>Bug Fixes</li>
</ul>
</description>
</release>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/eolie/helper_dbus.py new/eolie-0.9.62/eolie/helper_dbus.py
--- old/eolie-0.9.61/eolie/helper_dbus.py 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/eolie/helper_dbus.py 2019-05-21 21:33:37.000000000 +0200
@@ -10,7 +10,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from gi.repository import Gio
+from gi.repository import Gio, GLib
from eolie.define import PROXY_BUS, PROXY_PATH, PROXY_INTERFACE, App
from eolie.logger import Logger
@@ -35,14 +35,17 @@
try:
bus = App().get_dbus_connection()
proxy_bus = PROXY_BUS % page_id
+ cancellable = Gio.Cancellable()
+ GLib.timeout_add(2000, cancellable.cancel)
Gio.DBusProxy.new(bus, Gio.DBusProxyFlags.NONE, None,
proxy_bus,
PROXY_PATH,
- PROXY_INTERFACE, None,
+ PROXY_INTERFACE, cancellable,
self.__on_get_proxy,
call, dbus_args, callback, *args)
except Exception as e:
Logger.error("DBusHelper::call(): %s", e)
+ callback(None, None, *args)
def connect(self, signal, callback, page_id):
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/eolie/popover_uri.py new/eolie-0.9.62/eolie/popover_uri.py
--- old/eolie-0.9.61/eolie/popover_uri.py 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/eolie/popover_uri.py 2019-05-21 21:33:37.000000000 +0200
@@ -89,24 +89,21 @@
if favicon is not None:
grid.attach(favicon, 0, 0, 1, 2)
- self.__title = Gtk.Label.new(title)
+ uri = item.get_property("uri")
+ self.__title = Gtk.Label.new()
self.__title.set_ellipsize(Pango.EllipsizeMode.END)
self.__title.set_property("halign", Gtk.Align.START)
self.__title.set_hexpand(True)
self.__title.set_property('has-tooltip', True)
self.__title.connect('query-tooltip', self.__on_query_tooltip)
self.__title.show()
- grid.attach(self.__title, 1, 0, 1, 1)
-
- if favicon is not None:
- uri = Gtk.Label.new(item.get_property("uri"))
- uri.set_ellipsize(Pango.EllipsizeMode.END)
- uri.set_property("halign", Gtk.Align.START)
- uri.get_style_context().add_class("dim-label")
- uri.set_property('has-tooltip', True)
- uri.connect('query-tooltip', self.__on_query_tooltip)
- uri.show()
- grid.attach(uri, 1, 1, 1, 1)
+ if uri:
+ self.__title.set_markup("%s\n<span alpha='40000'>%s</span>" %
+ (GLib.markup_escape_text(title),
+ GLib.markup_escape_text(uri)))
+ else:
+ self.__title.set_text(title)
+ grid.attach(self.__title, 1, 0, 1, 2)
if item_type == Type.HISTORY:
dt = datetime.fromtimestamp(item.get_property("atime"))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/eolie/sites_manager_child.py new/eolie-0.9.62/eolie/sites_manager_child.py
--- old/eolie-0.9.61/eolie/sites_manager_child.py 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/eolie/sites_manager_child.py 2019-05-21 21:33:37.000000000 +0200
@@ -118,7 +118,9 @@
"""
if event in [WebKit2.LoadEvent.STARTED,
WebKit2.LoadEvent.COMMITTED]:
- self.__label.set_text(webview.get_uri())
+ uri = webview.get_uri()
+ if uri is not None:
+ self.__label.set_text(uri)
def __on_webview_title_changed(self, webview, title):
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/eolie/toolbar_title.py new/eolie-0.9.62/eolie/toolbar_title.py
--- old/eolie-0.9.61/eolie/toolbar_title.py 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/eolie/toolbar_title.py 2019-05-21 21:33:37.000000000 +0200
@@ -570,15 +570,20 @@
GLib.idle_add(self.__window.close_popovers)
parsed = urlparse(uri)
# Search a missing scheme
- if uri.find(".") != -1 and not parsed.scheme:
- db_uri = App().history.get_match(uri)
- if db_uri is not None:
- db_parsed = urlparse(db_uri)
- if db_parsed.netloc.startswith("www.") and\
- not parsed.netloc.startswith("www."):
- uri = "%s://www.%s" % (db_parsed.scheme, uri)
- else:
- uri = "%s://%s" % (db_parsed.scheme, uri)
+ if uri.find(".") != -1 and\
+ uri.find(" ") == -1 and\
+ not parsed.scheme:
+ # Add missing www.
+ if not uri.startswith("www."):
+ db_uri = App().history.get_match("://www." + uri)
+ if db_uri is not None:
+ uri = "www." + uri
+ # Add missing scheme
+ db_uri = App().history.get_match("https://" + uri)
+ if db_uri is None:
+ uri = "http://" + uri
+ else:
+ uri = "https://" + uri
self.__window.container.load_uri(uri)
self.__window.container.set_expose(False)
if self.__entry_changed_id is not None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/eolie/utils.py new/eolie-0.9.62/eolie/utils.py
--- old/eolie-0.9.61/eolie/utils.py 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/eolie/utils.py 2019-05-21 21:33:37.000000000 +0200
@@ -80,8 +80,6 @@
favicon_uri = None
try:
parsed = urlparse(uri)
- if parsed.path == "/":
- return None
for uri in [parsed.netloc + parsed.path, parsed.netloc]:
sql = sqlite3.connect(favicons_path, 600.0)
result = sql.execute("SELECT url\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/eolie/webview_artwork.py new/eolie-0.9.62/eolie/webview_artwork.py
--- old/eolie-0.9.61/eolie/webview_artwork.py 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/eolie/webview_artwork.py 2019-05-21 21:33:37.000000000 +0200
@@ -119,7 +119,6 @@
@param uri as str
@param initial_uri as str
"""
- resized = None
# Save webview favicon
if surface is not None:
if surface.get_width() >= ArtSize.FAVICON:
@@ -130,12 +129,10 @@
exists = App().art.exists(uri, favicon_type)
if not exists:
resized = resize_favicon(surface)
- # We wait for a better favicon
- if resized is not None:
- self.__save_favicon_to_cache(resized,
- uri,
- initial_uri,
- favicon_type)
+ self.__save_favicon_to_cache(resized,
+ uri,
+ initial_uri,
+ favicon_type)
def __save_favicon_to_cache(self, surface, uri, initial_uri, favicon_type):
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/meson.build new/eolie-0.9.62/meson.build
--- old/eolie-0.9.61/meson.build 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/meson.build 2019-05-21 21:33:37.000000000 +0200
@@ -1,5 +1,5 @@
project('eolie', 'c',
- version: '0.9.61',
+ version: '0.9.62',
meson_version: '>= 0.40.0',
)
i18n = import('i18n')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/org.gnome.Eolie.json new/eolie-0.9.62/org.gnome.Eolie.json
--- old/eolie-0.9.61/org.gnome.Eolie.json 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/org.gnome.Eolie.json 2019-05-21 21:33:37.000000000 +0200
@@ -4,6 +4,8 @@
"runtime-version": "master",
"sdk": "org.gnome.Sdk",
"command": "eolie",
+ "tags": ["devel", "development", "nightly"],
+ "desktop-file-name-prefix": "(Development) ",
"finish-args": [
"--share=ipc",
"--share=network",
@@ -24,8 +26,7 @@
"--talk-name=ca.desrt.dconf",
"--env=DCONF_USER_CONFIG_DIR=.config/dconf"
],
- "modules": [
- {
+ "modules": [{
"name": "gst-libav",
"config-opts": [
"--disable-gtk-doc"
@@ -34,13 +35,11 @@
"*.la",
"/share/gtk-doc"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.12.4.tar.xz",
- "sha256": "2a56aa5d2d8cd912f2bce17f174713d2c417ca298f1f9c28ee66d4aa1e1d9e62"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.14.4.tar.xz",
+ "sha256": "dfd78591901df7853eab7e56a86c34a1b03635da0d3d56b89aa577f1897865da"
+ }]
},
{
"name": "gst-plugins-ugly",
@@ -51,13 +50,11 @@
"*.la",
"/share/gtk-doc"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.1…",
- "sha256": "1c165b8d888ed350acd8e6ac9f6fe06508e6fcc0a3afc6ccc9fbeb30df9be522"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.1…",
+ "sha256": "ac02d837f166c35ff6ce0738e281680d0b90052cfb1f0255dcf6aaca5f0f6d23"
+ }]
},
{
"name": "enchant",
@@ -67,13 +64,11 @@
"*.la",
"/share"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://github.com/AbiWord/enchant/releases/download/v2.2.3/enchant-2.2.3.t…",
- "sha256": "abd8e915675cff54c0d4da5029d95c528362266557c61c7149d53fa069b8076d"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://github.com/AbiWord/enchant/releases/download/v2.2.3/enchant-2.2.3.t…",
+ "sha256": "abd8e915675cff54c0d4da5029d95c528362266557c61c7149d53fa069b8076d"
+ }]
},
{
"name": "gtkspell",
@@ -81,41 +76,47 @@
"*.la",
"/share/gtk-doc"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://sourceforge.net/projects/gtkspell/files/3.0.10/gtkspell3-3.0.10.tar…",
- "sha256": "b040f63836b347eb344f5542443dc254621805072f7141d49c067ecb5a375732"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://sourceforge.net/projects/gtkspell/files/3.0.10/gtkspell3-3.0.10.tar…",
+ "sha256": "b040f63836b347eb344f5542443dc254621805072f7141d49c067ecb5a375732"
+ }]
},
{
"name": "python-requests",
"buildsystem": "simple",
"build-commands": [
- "pip3 install --prefix=/app requests-2.14.2-py2.py3-none-any.whl"
+ "pip3 install --prefix=/app requests-2.21.0-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/e4/b0/286e8a936158e5cc5791d5fa3bc4b1d5a7e1…",
- "sha256": "3b39cde35be51762885631cf586f4dc2284951b44d479a4454020758d767cc2f"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://files.pythonhosted.org/packages/7d/e3/20f3d364d6c8e5d2353c72a67778e…",
+ "sha256": "7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b"
+ }]
},
{
"name": "python-beautifulsoup4",
"buildsystem": "simple",
"build-commands": [
- "pip3 install --prefix=/app beautifulsoup4-4.6.0-py3-none-any.whl"
+ "pip3 install --prefix=/app beautifulsoup4-4.7.1-py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/9e/d4/10f46e5cfac773e22707237bfcd51bbffeaf…",
- "sha256": "11a9a27b7d3bddc6d86f59fb76afb70e921a25ac2d6cc55b40d072bd68435a76"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://files.pythonhosted.org/packages/1d/5d/3260694a59df0ec52f8b4883f5d23…",
+ "sha256": "034740f6cb549b4e932ae1ab975581e6103ac8f942200a0e9759065984391858"
+ }],
+ "modules": [{
+ "name": "soupsieve",
+ "buildsystem": "simple",
+ "build-commands": [
+ "pip3 install --prefix=/app soupsieve-1.9.1-py2.py3-none-any.whl"
+ ],
+ "sources": [{
+ "type": "file",
+ "url": "https://files.pythonhosted.org/packages/b9/a5/7ea40d0f8676bde6e464a6435a48b…",
+ "sha256": "6898e82ecb03772a0d82bd0d0a10c0d6dcc342f77e0701d0ec4a8271be465ece"
+ }]
+ }]
},
{
"name": "six",
@@ -123,27 +124,23 @@
"build-commands": [
"python3 setup.py install --prefix=/app"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://github.com/benjaminp/six/archive/1.11.0.tar.gz",
- "sha256": "927dc6fcfccd4e32e1ce161a20bf8cda39d8c9d5f7a845774486907178f69bd4"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://github.com/benjaminp/six/archive/1.12.0.tar.gz",
+ "sha256": "0ce7aef70d066b8dda6425c670d00c25579c3daad8108b3e3d41bef26003c852"
+ }]
},
{
"name": "mohawk",
"buildsystem": "simple",
"build-commands": [
- "python3 setup.py install --prefix=/app --root=/"
+ "pip3 install --prefix=/app mohawk-1.0.0-py2-none-any.whl"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://pypi.python.org/packages/19/22/10f696548a8d41ad41b92ab6c848c60c669e…",
- "sha256": "e98b331d9fa9ece7b8be26094cbe2d57613ae882133cc755167268a984bc0ab3"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://files.pythonhosted.org/packages/b8/ac/b5b421dddcd731fb3dfb1b473d96a…",
+ "sha256": "aa57e6626a6ea323ab714779f23734de1d1feca8cb6fc00b65e65ce115c1696a"
+ }]
},
{
"name": "requests_hawk",
@@ -151,27 +148,23 @@
"build-commands": [
"pip3 install --prefix=/app requests_hawk-1.0.0-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/3b/6a/d1aa3fab0b788bf4cf3d60898ff6b80852c8…",
- "sha256": "c2626ab31ebef0c81b97781c44c2275bfcc6d8e8520fc4ced495f0f386f8fe26"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://files.pythonhosted.org/packages/3b/6a/d1aa3fab0b788bf4cf3d60898ff6b…",
+ "sha256": "c2626ab31ebef0c81b97781c44c2275bfcc6d8e8520fc4ced495f0f386f8fe26"
+ }]
},
{
"name": "hawkauthlib",
"buildsystem": "simple",
"build-commands": [
- "python3 setup.py install --prefix=/app --root=/"
+ "pip3 install --prefix=/app hawkauthlib-2.0.0-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://pypi.python.org/packages/46/62/54729cbfc8d115f07f41f74a43a8e3711be3…",
- "sha256": "7ac93c892e7629721dde196193c9af3bde1f20540945569f7c7d34d3ea92680a"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://files.pythonhosted.org/packages/53/ec/23dd5cbd5e950543fdd30d91ddac4…",
+ "sha256": "935878d3a75832aa76f78ddee13491f1466cbd69a8e7e4248902763cf9953ba9"
+ }]
},
{
"name": "cffi",
@@ -179,13 +172,11 @@
"build-commands": [
"python3 setup.py install --prefix=/app --root=/"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://pypi.python.org/packages/5b/b9/790f8eafcdab455bcd3bd908161f802c9ce5…",
- "sha256": "b3b02911eb1f6ada203b0763ba924234629b51586f72a21faacc638269f4ced5"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://files.pythonhosted.org/packages/64/7c/27367b38e6cc3e1f49f193deb761f…",
+ "sha256": "e113878a446c6228669144ae8a56e268c91b7f1fafae927adc4879d9849e0ea7"
+ }]
},
{
"name": "pycparser",
@@ -193,13 +184,11 @@
"build-commands": [
"python3 setup.py install --prefix=/app --root=/"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://pypi.python.org/packages/be/64/1bb257ffb17d01f4a38d7ce686809a736837…",
- "sha256": "0aac31e917c24cb3357f5a4d5566f2cc91a19ca41862f6c3c22dc60a629673b6"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7…",
+ "sha256": "a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3"
+ }]
},
{
"name": "cryptography",
@@ -207,13 +196,11 @@
"build-commands": [
"python3 setup.py install --prefix=/app --root=/ --skip-build"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://pypi.python.org/packages/ec/5f/d5bc241d06665eed93cd8d3aa7198024ce78…",
- "sha256": "323524312bb467565ebca7e50c8ae5e9674e544951d28a2904a50012a8828190"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://files.pythonhosted.org/packages/07/ca/bc827c5e55918ad223d59d299fff9…",
+ "sha256": "26c821cbeb683facb966045e2064303029d572a87ee69ca5a1bf54bf55f93ca6"
+ }]
},
{
"name": "PyYAML",
@@ -221,13 +208,11 @@
"build-commands": [
"python3 setup.py install --prefix=/app --root=/"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://pypi.python.org/packages/4a/85/db5a2df477072b2902b0eb892feb37d88ac6…",
- "sha256": "592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://files.pythonhosted.org/packages/9f/2c/9417b5c774792634834e730932745…",
+ "sha256": "436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95"
+ }]
},
{
"name": "PyBrowserID",
@@ -235,83 +220,71 @@
"build-commands": [
"python3 setup.py install --prefix=/app --root=/"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://pypi.python.org/packages/d7/fd/729ef9ff743bc1758f24c5dbbe4c650f892b…",
- "sha256": "bf72f57eaa4d2ea36c6888e868f49e588c7b9c0b78dfbf2bc79fee93e97f39d2"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://files.pythonhosted.org/packages/e4/2e/e9bb9e24e600da08ff6a4d0033624…",
+ "sha256": "6c227669e87cc25796ae76f6a0ef65025528c8ad82d352679fa9a3e5663a71e3"
+ }]
},
{
"name": "pyparsing",
"buildsystem": "simple",
"build-commands": [
- "pip3 install --prefix=/app pyparsing-2.2.0-py2.py3-none-any.whl"
+ "pip3 install --prefix=/app pyparsing-2.4.0-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/6a/8a/718fd7d3458f9fab8e67186b00abdd345b63…",
- "sha256": "fee43f17a9c4087e7ed1605bd6df994c6173c1e977d7ade7b651292fab2bd010"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://files.pythonhosted.org/packages/dd/d9/3ec19e966301a6e25769976999bd7…",
+ "sha256": "9b6323ef4ab914af344ba97510e966d64ba91055d6b9afa6b30799340e89cc03"
+ }]
},
{
"name": "packaging",
"buildsystem": "simple",
"build-commands": [
- "pip3 install --prefix=/app packaging-16.8-py2.py3-none-any.whl"
+ "pip3 install --prefix=/app packaging-19.0-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/87/1b/c39b7c65b5612812b83d6cab7ef2885eac9f…",
- "sha256": "99276dc6e3a7851f32027a68f1095cd3f77c148091b092ea867a351811cfe388"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://files.pythonhosted.org/packages/91/32/58bc30e646e55eab8b21abf89e353…",
+ "sha256": "9e1cbf8c12b1f1ce0bb5344b8d7ecf66a6f8a6e91bcb0c84593ed6d3ab5c4ab3"
+ }]
},
{
"name": "asn1crypto",
"buildsystem": "simple",
"build-commands": [
- "pip3 install --prefix=/app asn1crypto-0.22.0-py2.py3-none-any.whl"
+ "pip3 install --prefix=/app asn1crypto-0.24.0-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/97/ba/7e8117d8efcee589f4d96dd2b2eb1d997f96…",
- "sha256": "d232509fefcfcdb9a331f37e9c9dc20441019ad927c7d2176cf18ed5da0ba097"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://files.pythonhosted.org/packages/ea/cd/35485615f45f30a510576f1a56d1e…",
+ "sha256": "2f1adbb7546ed199e3c90ef23ec95c5cf3585bac7d11fb7eb562a3fe89c64e87"
+ }]
},
{
"name": "WebOb",
"buildsystem": "simple",
"build-commands": [
- "pip3 install --prefix=/app WebOb-1.6.0-py2.py3-none-any.whl"
+ "pip3 install --prefix=/app WebOb-1.8.5-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/12/5a/b6ef092cf8e70d2d63fdd8d2c6d479b1896d…",
- "sha256": "69356a75980172f3e76717f6899b6c75d95ccdc7a2cb6a3b8bd6a7de3fc72401"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://files.pythonhosted.org/packages/06/e1/4acd2b4327fceb4c6446bdbca515f…",
+ "sha256": "36db8203c67023d68c1b00208a7bf55e3b10de2aa317555740add29c619de12b"
+ }]
},
{
"name": "idna",
"buildsystem": "simple",
"build-commands": [
- "pip3 install --prefix=/app idna-2.5-py2.py3-none-any.whl"
+ "pip3 install --prefix=/app idna-2.8-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/11/7d/9bbbd7bb35f34b0169542487d2a8859e4430…",
- "sha256": "cc19709fd6d0cbfed39ea875d29ba6d4e22c0cebc510a76d6302a28385e8bb70"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd0386…",
+ "sha256": "ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"
+ }]
},
{
"name": "Naked",
@@ -319,13 +292,11 @@
"build-commands": [
"pip3 install --prefix=/app Naked-0.1.31-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/02/36/b8107b51adca73402ec1860d88f41d958e27…",
- "sha256": "19de9961f4edb29e75cf837e8e031d6b52fbba4f0033515893d26f69c74b3b1f"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://pypi.python.org/packages/02/36/b8107b51adca73402ec1860d88f41d958e27…",
+ "sha256": "19de9961f4edb29e75cf837e8e031d6b52fbba4f0033515893d26f69c74b3b1f"
+ }]
},
{
"name": "shellescape",
@@ -333,13 +304,11 @@
"build-commands": [
"pip3 install --prefix=/app shellescape-3.4.1-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/51/b6/986c99a10040beaaefca1ad6c93bd7738cb8…",
- "sha256": "3ff2aeb6ce2c5a4e6059fe4a2a745a824f5a3834fe8365a39c5ea691073cfdb6"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://pypi.python.org/packages/51/b6/986c99a10040beaaefca1ad6c93bd7738cb8…",
+ "sha256": "3ff2aeb6ce2c5a4e6059fe4a2a745a824f5a3834fe8365a39c5ea691073cfdb6"
+ }]
},
{
"name": "pycrypto",
@@ -347,51 +316,43 @@
"build-commands": [
"python3 setup.py install --prefix=/app --root=/"
],
- "sources": [
- {
- "type": "archive",
- "url": "https://pypi.python.org/packages/60/db/645aa9af249f059cc3a368b118de33889219…",
- "sha256": "f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://files.pythonhosted.org/packages/60/db/645aa9af249f059cc3a368b118de3…",
+ "sha256": "f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c"
+ }]
},
{
"name": "python-dateutil",
"buildsystem": "simple",
"build-commands": [
- "pip3 install --prefix=/app python_dateutil-2.6.1-py2.py3-none-any.whl"
+ "pip3 install --prefix=/app python_dateutil-2.8.0-py2.py3-none-any.whl"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/4b/0d/7ed381ab4fe80b8ebf34411d14f253e1cf3e…",
- "sha256": "95511bae634d69bc7329ba55e646499a842bc4ec342ad54a8cdb65645a0aad3c"
- }
- ]
+ "sources": [{
+ "type": "file",
+ "url": "https://files.pythonhosted.org/packages/41/17/c62faccbfbd163c7f57f3844689e3…",
+ "sha256": "7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb"
+ }]
},
{
"name": "PyFxA",
"buildsystem": "simple",
"build-commands": [
- "pip3 install --prefix=/app PyFxA-0.3.0-py2.py3-none-any.whl"
+ "python3 setup.py install --prefix=/app"
],
- "sources": [
- {
- "type": "file",
- "url": "https://pypi.python.org/packages/b6/97/91b810a1b5678c2b84e0e1fc8a47736fd8d4…",
- "sha256": "e5963db092b71bff0f51e0695eeeb59405e5646c51998c2d3f06b96d5aca6ace"
- }
- ]
+ "sources": [{
+ "type": "archive",
+ "url": "https://files.pythonhosted.org/packages/cf/93/002ded7990d847f730cd9b63fec2f…",
+ "sha256": "616689486d8d63956aa40836cffafde6e7590cdeb200badabaaf3c17d5b26cce"
+ }]
},
{
"name": "Eolie",
"buildsystem": "meson",
- "sources": [
- {
- "type": "git",
- "url": "https://gitlab.gnome.org/World/eolie.git"
- }
- ]
+ "sources": [{
+ "type": "git",
+ "url": "https://gitlab.gnome.org/World/eolie.git"
+ }]
}
]
-}
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/subprojects/po/ar.po new/eolie-0.9.62/subprojects/po/ar.po
--- old/eolie-0.9.61/subprojects/po/ar.po 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/subprojects/po/ar.po 2019-05-21 21:33:37.000000000 +0200
@@ -8,17 +8,17 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-01 14:09+0200\n"
-"PO-Revision-Date: 2018-12-16 10:08+0000\n"
+"PO-Revision-Date: 2019-05-03 21:37+0000\n"
"Last-Translator: mohammadA <mohammadAbdulhadi1(a)gmail.com>\n"
-"Language-Team: Arabic <https://hosted.weblate.org/projects/gnumdk/eolie/ar/"
-">\n"
+"Language-Team: Arabic <https://hosted.weblate.org/projects/gnumdk/eolie/ar/>"
+"\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
-"X-Generator: Weblate 3.4-dev\n"
+"X-Generator: Weblate 3.7-dev\n"
#: ../data/org.gnome.Eolie.gschema.xml:19
msgid "Show debug messages"
@@ -50,7 +50,7 @@
#: ../data/org.gnome.Eolie.gschema.xml:54
msgid "Enable smooth scrolling"
-msgstr ""
+msgstr "فعِّل التمرير السلس"
#: ../data/org.gnome.Eolie.gschema.xml:59
msgid "Block all unwanted popups"
@@ -184,7 +184,7 @@
#: ../data/AboutDialog.ui.in:67 ../eolie/container.py:470
msgid "Patreon"
-msgstr ""
+msgstr "باتريون"
#: ../data/AboutDialog.ui.in:77 ../eolie/container.py:470
msgid "PayPal"
@@ -351,7 +351,7 @@
#: ../data/DialogCookies.ui:19
msgid "Cookies manager"
-msgstr ""
+msgstr "مدير الكعكات"
#: ../data/DialogCookies.ui:23
msgid "Delete cookies"
@@ -727,11 +727,11 @@
#: ../data/SettingsDialog.ui:929
msgid "Login :"
-msgstr ""
+msgstr "الولوج :"
#: ../data/SettingsDialog.ui:951
msgid "Password :"
-msgstr ""
+msgstr "كلمة السر :"
#: ../data/SettingsDialog.ui:972
msgid "Allow synchronization"
@@ -743,11 +743,12 @@
#: ../data/SettingsDialog.ui:1028
msgid "Code :"
-msgstr ""
+msgstr "الرمز :"
#: ../data/SettingsDialog.ui:1039 ../data/SettingsDialog.ui:1040
+#, fuzzy
msgid "You need to enable Two Factor Authentication"
-msgstr ""
+msgstr "تحتاج إلى تفعيل الاستيثاق ذو العاملين"
#: ../data/SettingsDialog.ui:1059
msgid "Syncing"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/subprojects/po/de.po new/eolie-0.9.62/subprojects/po/de.po
--- old/eolie-0.9.61/subprojects/po/de.po 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/subprojects/po/de.po 2019-05-21 21:33:37.000000000 +0200
@@ -4,16 +4,16 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-01 14:09+0200\n"
-"PO-Revision-Date: 2019-02-22 21:17+0000\n"
-"Last-Translator: Vincent Bermel <willovince(a)openmailbox.org>\n"
-"Language-Team: German <https://hosted.weblate.org/projects/gnumdk/eolie/de/"
-">\n"
+"PO-Revision-Date: 2019-05-06 19:48+0000\n"
+"Last-Translator: ssantos <ssantos(a)web.de>\n"
+"Language-Team: German <https://hosted.weblate.org/projects/gnumdk/eolie/de/>"
+"\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.5-dev\n"
+"X-Generator: Weblate 3.7-dev\n"
#: ../data/org.gnome.Eolie.gschema.xml:19
msgid "Show debug messages"
@@ -25,7 +25,7 @@
#: ../data/org.gnome.Eolie.gschema.xml:29
msgid "INTERNAL"
-msgstr ""
+msgstr "INTERN"
#: ../data/org.gnome.Eolie.gschema.xml:34
msgid "Show sidebar(sites manager)"
@@ -47,7 +47,7 @@
#: ../data/org.gnome.Eolie.gschema.xml:54
msgid "Enable smooth scrolling"
-msgstr ""
+msgstr "Sanftes Scrollen aktivieren"
#: ../data/org.gnome.Eolie.gschema.xml:59
msgid "Block all unwanted popups"
@@ -181,7 +181,7 @@
#: ../data/AboutDialog.ui.in:67 ../eolie/container.py:470
msgid "Patreon"
-msgstr ""
+msgstr "Patreon"
#: ../data/AboutDialog.ui.in:77 ../eolie/container.py:470
msgid "PayPal"
@@ -350,7 +350,7 @@
#: ../data/DialogCookies.ui:19
msgid "Cookies manager"
-msgstr ""
+msgstr "Manager für Cookies"
#: ../data/DialogCookies.ui:23
msgid "Delete cookies"
@@ -730,11 +730,11 @@
#: ../data/SettingsDialog.ui:929
msgid "Login :"
-msgstr ""
+msgstr "Anmeldung:"
#: ../data/SettingsDialog.ui:951
msgid "Password :"
-msgstr ""
+msgstr "Passwort:"
#: ../data/SettingsDialog.ui:972
msgid "Allow synchronization"
@@ -746,11 +746,11 @@
#: ../data/SettingsDialog.ui:1028
msgid "Code :"
-msgstr ""
+msgstr "Code :"
#: ../data/SettingsDialog.ui:1039 ../data/SettingsDialog.ui:1040
msgid "You need to enable Two Factor Authentication"
-msgstr ""
+msgstr "Sie müssen die Zwei-Faktor-Authentifizierung aktivieren"
#: ../data/SettingsDialog.ui:1059
msgid "Syncing"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/subprojects/po/es.po new/eolie-0.9.62/subprojects/po/es.po
--- old/eolie-0.9.61/subprojects/po/es.po 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/subprojects/po/es.po 2019-05-21 21:33:37.000000000 +0200
@@ -8,16 +8,16 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-01 14:09+0200\n"
-"PO-Revision-Date: 2018-07-18 01:42+0000\n"
-"Last-Translator: Wilfer Daniel Ciro Maya <wilcirom(a)gmail.com>\n"
-"Language-Team: Spanish <https://hosted.weblate.org/projects/gnumdk/eolie/es/"
-">\n"
+"PO-Revision-Date: 2019-05-19 15:48+0000\n"
+"Last-Translator: Fernando Espada <fespada(a)posteo.net>\n"
+"Language-Team: Spanish <https://hosted.weblate.org/projects/gnumdk/eolie/es/>"
+"\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.1-dev\n"
+"X-Generator: Weblate 3.7-dev\n"
#: ../data/org.gnome.Eolie.gschema.xml:19
msgid "Show debug messages"
@@ -181,7 +181,7 @@
#: ../data/AboutDialog.ui.in:67 ../eolie/container.py:470
msgid "Patreon"
-msgstr ""
+msgstr "Patreon"
#: ../data/AboutDialog.ui.in:77 ../eolie/container.py:470
msgid "PayPal"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eolie-0.9.61/subprojects/po/nb_NO.po new/eolie-0.9.62/subprojects/po/nb_NO.po
--- old/eolie-0.9.61/subprojects/po/nb_NO.po 2019-05-01 14:11:55.000000000 +0200
+++ new/eolie-0.9.62/subprojects/po/nb_NO.po 2019-05-21 21:33:37.000000000 +0200
@@ -8,7 +8,7 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-01 14:09+0200\n"
-"PO-Revision-Date: 2019-04-20 19:33+0000\n"
+"PO-Revision-Date: 2019-05-19 15:48+0000\n"
"Last-Translator: Allan Nordhøy <epost(a)anotheragency.no>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/gnumdk/"
"eolie/nb_NO/>\n"
@@ -17,7 +17,7 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.6\n"
+"X-Generator: Weblate 3.7-dev\n"
#: ../data/org.gnome.Eolie.gschema.xml:19
msgid "Show debug messages"
@@ -1367,7 +1367,7 @@
#: ../eolie/webview_errors.py:140
msgid "Network not available"
-msgstr "Nettverk utilgjengelig"
+msgstr "Nettverk ikke tilgjengelig"
#: ../eolie/webview_errors.py:141
msgid "Check your network connection"
1
0
Hello community,
here is the log from the commit of package xtables-geoip for openSUSE:Factory checked in at 2019-05-24 11:30:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xtables-geoip (Old)
and /work/SRC/openSUSE:Factory/.xtables-geoip.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xtables-geoip"
Fri May 24 11:30:55 2019 rev:43 rq:704807 version:20190521
Changes:
--------
--- /work/SRC/openSUSE:Factory/xtables-geoip/xtables-geoip.changes 2019-02-05 11:18:55.112890609 +0100
+++ /work/SRC/openSUSE:Factory/.xtables-geoip.new.5148/xtables-geoip.changes 2019-05-24 11:30:56.653413279 +0200
@@ -1,0 +2,5 @@
+Wed May 22 16:27:16 UTC 2019 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update database files to 20190521
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xtables-geoip.spec ++++++
--- /var/tmp/diff_new_pack.t4nNuw/_old 2019-05-24 11:30:57.501413060 +0200
+++ /var/tmp/diff_new_pack.t4nNuw/_new 2019-05-24 11:30:57.505413059 +0200
@@ -17,13 +17,14 @@
Name: xtables-geoip
-Version: 20190129
+Version: 20190521
Release: 0
Summary: Geolocation database files for xt_geoip
License: CC-BY-SA-4.0
Group: Productivity/Networking/Security
-Url: http://dev.maxmind.com/geoip/legacy/geolite/
+URL: https://dev.maxmind.com/geoip/geoip2/geolite2/
+#DL-URL: https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip
Source: GeoLite2-Country-CSV.zip
Source4: %name-rpmlintrc
BuildArch: noarch
++++++ GeoLite2-Country-CSV.zip ++++++
Binary files /var/tmp/diff_new_pack.t4nNuw/_old and /var/tmp/diff_new_pack.t4nNuw/_new differ
1
0
Hello community,
here is the log from the commit of package par for openSUSE:Factory checked in at 2019-05-24 11:30:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/par (Old)
and /work/SRC/openSUSE:Factory/.par.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "par"
Fri May 24 11:30:53 2019 rev:19 rq:704789 version:1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/par/par.changes 2018-02-20 17:55:40.185180094 +0100
+++ /work/SRC/openSUSE:Factory/.par.new.5148/par.changes 2019-05-24 11:30:54.157413922 +0200
@@ -1,0 +2,30 @@
+Wed May 22 13:42:27 UTC 2019 - Doug Miller <dgm816(a)gmail.com>
+
+- Corect download url
+- Clarify changelog
+
+-------------------------------------------------------------------
+Wed May 22 11:48:54 UTC 2019 - Martin Pluskal <mpluskal(a)suse.com>
+
+- Update previou changelog entry
+- Fix download url
+
+-------------------------------------------------------------------
+Sat May 11 02:14:14 UTC 2019 - Doug Miller <dgm816(a)gmail.com>
+
+- Revert pacakge to build 'par' using the parchive sources.
+
+ On 2016-11-23 this package was updated to be built from the
+ 'par2cmdline' sources instead of the 'parchive' sources. These
+ are different projects (although worked on by some of the same
+ people, which probably led to some confusion).
+
+ This change converts this project from building par2cmdline
+ v0.8.0 to building the correct project of parchive v1.2.
+
+ In conjunction with this package fix, a new package called
+ 'par2cmdline' will be made available to return par2cmdline
+ v0.8.0 to the repos.
+- Re-add par.diff
+
+-------------------------------------------------------------------
Old:
----
par-0.8.0.tar.gz
New:
----
par-v1.1.tar.gz
par.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ par.spec ++++++
--- /var/tmp/diff_new_pack.y2J0yN/_old 2019-05-24 11:30:54.901413730 +0200
+++ /var/tmp/diff_new_pack.y2J0yN/_new 2019-05-24 11:30:54.909413729 +0200
@@ -1,7 +1,7 @@
#
# spec file for package par
#
-# Copyright (c) 2018 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,23 +12,19 @@
# 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/
#
Name: par
-Version: 0.8.0
+Version: 1.1
Release: 0
-Summary: Parity File Generator
-License: GPL-2.0+
-Group: System/Filesystems
-URL: https://github.com/Parchive/par2cmdline
-Source0: https://github.com/Parchive/par2cmdline/archive/v%{version}.tar.gz#/%{name}…
-BuildRequires: autoconf
-BuildRequires: automake
-BuildRequires: gcc-c++
-Provides: %{name} = 1.1
-Obsoletes: %{name} = 1.1
+Summary: Parchive - Parity Archive File Generator
+License: GPL-2.0-or-later
+Group: Productivity/Archiving/Backup
+URL: http://parchive.sourceforge.net/
+Source: https://sourceforge.net/projects/parchive/files/par/%{version}/par-v%{versi…
+Patch0: %{name}.diff
%description
Parchive creates extra parity data over several volumes. These can be
@@ -36,27 +32,18 @@
corruption.
%prep
-%setup -q -n par2cmdline-%{version}
+%setup -q -n %{name}-cmdline
+%patch0
%build
-autoreconf -fiv
-%configure
make %{?_smp_mflags}
-%check
-make %{?_smp_mflags} check
-
%install
%make_install
-chmod -x ChangeLog
%files
-%doc README AUTHORS ChangeLog
+%doc README AUTHORS NEWS
%license COPYING
-%{_bindir}/par2
-%{_bindir}/par2create
-%{_bindir}/par2repair
-%{_bindir}/par2verify
-%{_mandir}/man1/par2.1%{ext_man}
+%{_bindir}/par
%changelog
++++++ par.diff ++++++
--- Makefile
+++ Makefile 2004/02/08 19:43:02
@@ -1,5 +1,5 @@
-CFLAGS=-g -W -Wall -Wno-unused -O2
+CFLAGS=-g -W -Wall -Wno-unused $(RPM_OPT_FLAGS)
par: backend.o checkpar.o makepar.o rwpar.o rs.o md5.o fileops.o main.o readoldpar.o interface.o ui_text.o
$(CC) -o $@ $^
@@ -14,4 +14,5 @@
make CC="dos-gcc -s"
install: par
- install par ${HOME}/bin/
+ install -d $(DESTDIR)/usr/bin/
+ install par $(DESTDIR)/usr/bin/
1
0
Hello community,
here is the log from the commit of package tlp for openSUSE:Factory checked in at 2019-05-24 11:30:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tlp (Old)
and /work/SRC/openSUSE:Factory/.tlp.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tlp"
Fri May 24 11:30:49 2019 rev:12 rq:704782 version:1.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/tlp/tlp.changes 2019-03-19 10:02:52.515808860 +0100
+++ /work/SRC/openSUSE:Factory/.tlp.new.5148/tlp.changes 2019-05-24 11:30:51.689414557 +0200
@@ -1,0 +2,24 @@
+Sun May 19 14:35:37 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.2.2:
+ * Battery Features, tlp-stat -b:
+ - Show data for batteries named other than BAT0/BAT1
+ (non-ThinkPads).
+ - ThinkPad X1C6 discharge malfunction (gh#linrunner/TLP#395).
+ - Separate checks for charge thresholds and recalibration.
+ - Intelligible recommendation for tp-smapi on
+ ThinkPad X220/T420 et al.
+ - Explain "Battery Features: Charge Thresholds and Recalibrate".
+ * Discs:
+ - Fix type determination.
+ * Operation Mode AC/BAT:
+ - MacBookPro 5.3: Workaround for false AC offline status.
+ * Processor, tlp-stat -p:
+ - Fix read of /sys/devices/system/cpu/cpufreq/boost.
+ - x86_energy_perf_policy: Detect unsupported CPUs in newer
+ versions.
+ * Radio Devices:
+ - Make RESTORE_DEVICE_STATE_ON_STARTUP=1 persistent again
+ (gh#linrunner/TLP#404).
+
+-------------------------------------------------------------------
Old:
----
TLP-1.2.1.tar.gz
New:
----
TLP-1.2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tlp.spec ++++++
--- /var/tmp/diff_new_pack.FQ0duD/_old 2019-05-24 11:30:52.577414329 +0200
+++ /var/tmp/diff_new_pack.FQ0duD/_new 2019-05-24 11:30:52.581414328 +0200
@@ -18,7 +18,7 @@
%define _name TLP
Name: tlp
-Version: 1.2.1
+Version: 1.2.2
Release: 0
Summary: Save battery power on laptops
License: GPL-2.0-or-later AND GPL-3.0-or-later
@@ -116,6 +116,7 @@
%dir %{_libexecdir}/udev/rules.d/
%{_libexecdir}/udev/%{name}-usb-udev
%{_libexecdir}/udev/rules.d/85-%{name}.rules
+%{_localstatedir}/lib/%{name}/
%dir %{_datadir}/bash-completion/
%dir %{_datadir}/bash-completion/completions/
%{_datadir}/bash-completion/completions/bluetooth
++++++ TLP-1.2.1.tar.gz -> TLP-1.2.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/.github/Bug_Reporting_Howto.md new/TLP-1.2.2/.github/Bug_Reporting_Howto.md
--- old/TLP-1.2.1/.github/Bug_Reporting_Howto.md 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/.github/Bug_Reporting_Howto.md 2019-05-04 19:49:18.000000000 +0200
@@ -6,11 +6,13 @@
* Followed the appropiate [Installation instructions](https://linrunner.de/en/tlp/docs/tlp-linux-advanced-power-management.html#installation)
* Read the [Settings guide](https://linrunner.de/en/tlp/docs/tlp-configuration.html)
* Carefully checked the [FAQ](https://linrunner.de/en/tlp/docs/tlp-faq.html)
+* Checked [existing bug reports](https://github.com/linrunner/TLP/issues)
* Tried to isolate the cause as described in [Troubleshooting](https://linrunner.de/en/tlp/docs/tlp-troubleshooting.html)
### What not to report
* Missing packages (including tp-smapi and acpi_call)
* Asking for help about installation, configuration and usage
+* Questions about your laptop's power consumption and how to optimize it
* Deviations from powertop's recommendations
* Hardware issues e.g. worn out or malfunctioning batteries
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/.github/ISSUE_TEMPLATE/bug_report.md new/TLP-1.2.2/.github/ISSUE_TEMPLATE/bug_report.md
--- old/TLP-1.2.1/.github/ISSUE_TEMPLATE/bug_report.md 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/.github/ISSUE_TEMPLATE/bug_report.md 2019-05-04 19:49:18.000000000 +0200
@@ -24,7 +24,8 @@
1. Does the problem occur on battery or AC or both?
2. Actions to reproduce the behaviour
3. Shell commands entered and their output
-4. **Full output of `tlp-stat` via https://gist.github.com/ for *all* cases of 1**
+4. **Full output of `tlp-stat` via https://gist.github.com/ for *all*
+ matching cases of 1.**
**Additional context**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/Makefile new/TLP-1.2.2/Makefile
--- old/TLP-1.2.1/Makefile 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/Makefile 2019-05-04 19:49:18.000000000 +0200
@@ -15,6 +15,7 @@
TLP_MAN ?= /usr/share/man
TLP_META ?= /usr/share/metainfo
TLP_RUN ?= /run/tlp
+TLP_VAR ?= /var/lib/tlp
# Catenate DESTDIR to paths
_SBIN = $(DESTDIR)$(TLP_SBIN)
@@ -31,6 +32,7 @@
_MAN = $(DESTDIR)$(TLP_MAN)
_META = $(DESTDIR)$(TLP_META)
_RUN = $(DESTDIR)$(TLP_RUN)
+_VAR = $(DESTDIR)$(TLP_VAR)
SED = sed \
-e "s|@TLP_SBIN@|$(TLP_SBIN)|g" \
@@ -38,7 +40,8 @@
-e "s|@TLP_FLIB@|$(TLP_FLIB)|g" \
-e "s|@TLP_ULIB@|$(TLP_ULIB)|g" \
-e "s|@TLP_CONF@|$(TLP_CONF)|g" \
- -e "s|@TLP_RUN@|$(TLP_RUN)|g"
+ -e "s|@TLP_RUN@|$(TLP_RUN)|g" \
+ -e "s|@TLP_VAR@|$(TLP_VAR)|g"
INFILES = \
tlp \
@@ -117,11 +120,11 @@
ifneq ($(TLP_NO_INIT),1)
install -D -m 755 tlp.init $(_SYSV)/tlp
endif
-ifeq ($(TLP_WITH_SYSTEMD),1)
+ifneq ($(TLP_WITH_SYSTEMD),0)
install -D -m 644 tlp.service $(_SYSD)/tlp.service
install -m 644 tlp-sleep.service $(_SYSD)/
endif
-ifeq ($(TLP_WITH_ELOGIND),1)
+ifneq ($(TLP_WITH_ELOGIND),0)
install -D -m 755 tlp-sleep.elogind $(_ELOD)/49-tlp-sleep
endif
ifneq ($(TLP_NO_BASHCOMP),1)
@@ -132,6 +135,7 @@
ln -sf tlp $(_SHCPL)/wwan
endif
install -D -m 644 de.linrunner.tlp.metainfo.xml $(_META)/de.linrunner.tlp.metainfo.xml
+ install -d -m 755 $(_VAR)
install-rdw: all
# Package tlp-rdw
@@ -171,7 +175,7 @@
rm -r $(_TLIB)
rm $(_ULIB)/tlp-usb-udev
rm $(_ULIB)/rules.d/85-tlp.rules
- rm -f $(DESTDIR)/etc/init.d/tlp
+ rm -f $(_SYSV)/tlp
rm -f $(_SYSD)/tlp.service
rm -f $(_SYSD)/tlp-sleep.service
rm -f $(_ELOD)/49-tlp-sleep
@@ -181,6 +185,7 @@
rm -f $(_SHCPL)/wwan
rm -f $(_SHCPL)/tlp
rm -f $(_META)/de.linrunner.tlp.metainfo.xml
+ rm -r $(_VAR)
uninstall-rdw:
# Package tlp-rdw
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/changelog new/TLP-1.2.2/changelog
--- old/TLP-1.2.1/changelog 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/changelog 2019-05-04 19:49:18.000000000 +0200
@@ -1,3 +1,22 @@
++++ 1.2.2 --- 04.05.2019 +++
+
+ * Bugfixes
+ Battery Features, tlp-stat -b:
+ - Show data for batteries named other than BAT0/BAT1 (non-ThinkPads)
+ - Issue #395: ThinkPad X1C6 discharge malfunction
+ - Separate checks for charge thresholds and recalibration
+ - Intelligible recommendation for tp-smapi on ThinkPad X220/T420 et al.
+ - Explain "Battery Features: Charge Thresholds and Recalibrate"
+ Disks:
+ - Fix type determination
+ Operation Mode AC/BAT:
+ - MacBookPro 5.3: workaround for false AC offline status
+ Processor, tlp-stat -p:
+ - Fix read of /sys/devices/system/cpu/cpufreq/boost
+ - x86_energy_perf_policy: detect unsupported CPUs in newer versions
+ Radio Devices:
+ - Issue #404: make RESTORE_DEVICE_STATE_ON_STARTUP=1 persistent again
+
+++ 1.2.1 --- 18.03.2019 +++
* Bugfix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/func.d/15-tlp-func-disk new/TLP-1.2.2/func.d/15-tlp-func-disk
--- old/TLP-1.2.1/func.d/15-tlp-func-disk 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/func.d/15-tlp-func-disk 2019-05-04 19:49:18.000000000 +0200
@@ -32,7 +32,7 @@
get_disk_dev () { # translate disk id to device (sdX)
# $1: id or dev;
# retval: $_disk_dev, $_disk_id, $_disk_type
- local path
+ local bus path
if [ -h /dev/disk/by-id/$1 ]; then
# $1 is disk id
@@ -48,15 +48,22 @@
# determine device type (bus)
if [ -b /dev/$_disk_dev ]; then
- path="$($UDEVADM info -n "$_disk_dev" -q property 2>/dev/null | sed -n 's/^ID_PATH=//p')"
+ path="$($UDEVADM info -q property /dev/$_disk_dev 2>/dev/null | sed -n 's/^ID_PATH=//p')"
+ bus="$($UDEVADM info -q property /dev/$_disk_dev 2>/dev/null | sed -n 's/^ID_BUS=//p')"
case "$path" in
pci-*-nvme-*) _disk_type="nvme" ;;
pci-*-ata-*) _disk_type="ata" ;;
pci-*-usb-*) _disk_type="usb" ;;
pci-*-ieee1394-*) _disk_type="ieee1394" ;;
- *) _disk_type="unknown" ;;
+ *) case "$bus" in
+ nvme) _disk_type="nvme" ;;
+ ata) _disk_type="ata" ;;
+ usb) _disk_type="usb" ;;
+ ieee1394) _disk_type="ieee1394" ;;
+ *) _disk_type="unknown" ;;
+ esac
esac
- echo_debug "disk" "get_disk_dev($1): dev=$_disk_dev; type=$_disk_type; path=$path"
+ echo_debug "disk" "get_disk_dev($1): dev=$_disk_dev; type=$_disk_type; path=$path; bus=$bus"
else
_disk_type="none"
echo_debug "disk" "get_disk_dev($1).missing"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/func.d/30-tlp-func-rf-sw new/TLP-1.2.2/func.d/30-tlp-func-rf-sw
--- old/TLP-1.2.1/func.d/30-tlp-func-rf-sw 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/func.d/30-tlp-func-rf-sw 2019-05-04 19:49:18.000000000 +0200
@@ -22,6 +22,8 @@
readonly RDW_LOCKTIME=2
readonly RDW_KILL="rdw_kill"
+readonly RFSTATEFILE=$VARDIR/rfkill_saved
+
readonly DEFAULT_RESTORE_DEVICE_STATE_ON_STARTUP=0
# ----------------------------------------------------------------------------
@@ -118,7 +120,6 @@
}
check_nm () { # test if NetworkManager is running and nmcli is installed
-
cmd_exists $NMCLI
}
@@ -332,28 +333,31 @@
# shellcheck disable=SC2120
save_device_states () { # save radio states -- $1: list of rftypes
+ # rc: 0=ok/1=create failed/2=write failed
local dev
local devlist="${1:-$ALLDEV}" # when arg empty -> use all
-
- echo_debug "rf" "save_device_states($devlist): $RFSTATEFILE"
+ local rc=0
# create empty state file
- create_rundir
- { : > $RFSTATEFILE; } 2> /dev/null
-
- # iterate over all possible devices -> save state in file
- for dev in $devlist; do
- device_state $dev
- { printf '%s\n' "$dev $_devs" >> $RFSTATEFILE; } 2> /dev/null
- done
+ if { : > $RFSTATEFILE; } 2> /dev/null; then
+ # iterate over all possible devices -> save state in file
+ for dev in $devlist; do
+ device_state $dev
+ { printf '%s\n' "$dev $_devs" >> $RFSTATEFILE; } 2> /dev/null || rc=2
+ done
+ else
+ # create failed
+ rc=1
+ fi
- return 0
+ echo_debug "rf" "save_device_states($devlist): $RFSTATEFILE; rc=$rc"
+ return $rc
}
restore_device_states () { # restore radio type states
+ # rc: 0=ok/1=state file nonexistent
local sline
-
- echo_debug "rf" "restore_device_states: $RFSTATEFILE"
+ local rc=0
if [ -f $RFSTATEFILE ]; then
# read state file
@@ -362,11 +366,13 @@
set -- $sline # read dev, state into $1, $2
device_switch $1 $2
done < $RFSTATEFILE
-
- return 0
else
- return 1
+ # state file nonexistent
+ rc=1
fi
+
+ echo_debug "rf" "restore_device_states: $RFSTATEFILE; rc=$rc"
+ return $rc
}
set_radio_device_states () { # set/initialize all radio states
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/func.d/35-tlp-func-batt new/TLP-1.2.2/func.d/35-tlp-func-batt
--- old/TLP-1.2.1/func.d/35-tlp-func-batt 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/func.d/35-tlp-func-batt 2019-05-04 19:49:18.000000000 +0200
@@ -192,9 +192,9 @@
# --- Battery Detection
battery_present () { # check battery presence and return tpacpi-bat index
- # $1: BAT0/BAT1/DEF
+ # $1: BAT0/BAT1/DEF/other
# global param: $_bm_read
- # rc: 0=bat exists/1=bat nonexistent/255=no method available
+ # rc: 0=bat exists/1=bat nonexistent
# retval: $_bat_str: BAT0/BAT1;
# $_bat_idx: 1/2;
# $_bd_read: directory with battery data sysfiles;
@@ -203,7 +203,7 @@
# $_bf_dischg: sysfile for force discharge
# defaults
- local rc=255 # no threshold API available
+ local rc=1 # bat nonexistent
_bat_idx=0 # no index
_bat_str="" # no bat
_bd_read="" # no directories
@@ -218,14 +218,12 @@
# validate param
case $1 in
- BAT0|BAT1) blist="$1" ;;
- DEF) blist="BAT0 BAT1" ;;
- *) return 1 ;;
+ DEF) blist="BAT0 BAT1" ;;
+ *) blist="$1" ;;
esac
case $_bm_read in
natacpi) # note: includes tpacpi
- rc=1
for bs in $blist; do
bsd="$ACPIBATDIR/$bs"
@@ -250,6 +248,11 @@
_bat_idx=1 # BAT0 nonexistent --> BAT1 is main
fi
;;
+
+ *) # non-featured battery --> data read only
+ _bat_str="$bs"
+ _bd_read="$bsd"
+ ;;
esac
break # exit loop on first battery detected
fi
@@ -295,7 +298,6 @@
case $rc in
0) echo_debug "bat" "battery_present($1): bm_read=$_bm_read; bat_str=$_bat_str; bat_idx=$_bat_idx; bd_read=$_bd_read; bf_start=$_bf_start; bf_stop=$_bf_stop; bf_dischg=$_bf_dischg; rc=$rc" ;;
1) echo_debug "bat" "battery_present($1).not_detected: bm_read=$_bm_read; rc=$rc" ;;
- 255) echo_debug "bat" "battery_present($1).no_api" ;;
esac
return $rc
@@ -597,6 +599,13 @@
battery_present $bat
case $? in
0) # battery present
+ if [ "$_bm_thresh" = "none" ]; then
+ # no method available --> quit
+ echo "Error: battery charge thresholds not available." 1>&2
+ echo_debug "bat" "setcharge_battery.no_method"
+ return 1
+ fi
+
# get configured values if requested
if [ $use_cfg -eq 1 ]; then
eval start_thresh="\$START_CHARGE_THRESH_${_bat_str}"
@@ -604,12 +613,6 @@
fi
;;
- 255) # no method
- echo "Error: battery feature not available." 1>&2
- echo_debug "bat" "setcharge_battery.no_method"
- return 1
- ;;
-
*) # not present
echo "Error: battery $bat not present." 1>&2
echo_debug "bat" "setcharge_battery.not_present($bat)"
@@ -661,12 +664,13 @@
# check if selected battery is present
battery_present $bat
case $? in
- 0) ;; # battery present
-
- 255) # no method
- echo "Error: battery feature not available." 1>&2
- echo_debug "bat" "chargeonce_battery.no_method"
- return 1
+ 0) # battery present
+ if [ "$_bm_thresh" = "none" ]; then
+ # no method available --> quit
+ echo "Error: battery charge thresholds not available." 1>&2
+ echo_debug "bat" "chargeonce_battery.no_method"
+ return 1
+ fi
;;
*) # not present
@@ -859,12 +863,13 @@
# check if selected battery is present
battery_present $bat
case $? in
- 0) ;; # battery present
-
- 255) # no method
- echo "Error: battery feature not available." 1>&2
- echo_debug "bat" "discharge_battery.no_method"
- return 1
+ 0) # battery present
+ if [ "$_bm_dischg" = "none" ]; then
+ # no method available --> quit
+ echo "Error: battery discharge/recalibrate not available." 1>&2
+ echo_debug "bat" "discharge_battery.no_method"
+ return 1
+ fi
;;
*) # not present
@@ -877,16 +882,22 @@
# start discharge
set_force_discharge $_bat_str 1; rc=$?
if [ $rc -ne 0 ]; then
- echo_debug "bat" "discharge_battery.force_discharge_not_available($_bat_str)"
- echo "Error: discharge function not available for this laptop." 1>&2
+ echo_debug "bat" "discharge_battery.force_discharge_malfunction($_bat_str)"
+ echo "Error: discharge malfunction." 1>&2
return 1
fi
trap cancel_force_discharge INT # enable ^C hook
- # wait for start == while status not "discharging" -- 5.0 sec timeout
- wt=10
- while ! battery_discharging $_bat_str && [ $wt -gt 0 ] ; do sleep 0.5; wt=$((wt - 1)); done
+ # wait for start == while status not "discharging" -- 15.0 sec timeout
+ printf "Initiating discharge of battery %s " $_bat_str
+ wt=15
+ while ! battery_discharging $_bat_str && [ $wt -gt 0 ] ; do
+ sleep 1
+ printf "."
+ wt=$((wt - 1))
+ done
+ printf "\n"
if battery_discharging $_bat_str; then
# discharge initiated sucessfully --> wait for completion == while status "discharging"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/func.d/40-tlp-func-bay new/TLP-1.2.2/func.d/40-tlp-func-bay
--- old/TLP-1.2.1/func.d/40-tlp-func-bay 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/func.d/40-tlp-func-bay 2019-05-04 19:49:18.000000000 +0200
@@ -13,7 +13,6 @@
readonly DOCKGLOB="/sys/devices/platform/dock.?"
-readonly RFSTATEFILE=$RUNDIR/rfkill_saved
readonly BAYSTATEFILE=$RUNDIR/bay_saved
readonly DEFAULT_BAY_POWEROFF_ON_AC=0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/func.d/tlp-func-stat new/TLP-1.2.2/func.d/tlp-func-stat
--- old/TLP-1.2.1/func.d/tlp-func-stat 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/func.d/tlp-func-stat 2019-05-04 19:49:18.000000000 +0200
@@ -207,8 +207,8 @@
if [ -z "$model" ]; then
# hdparm -I not supported --> try udevadm approach
- vendor="$($UDEVADM info -n /dev/$1 -q property 2>/dev/null | sed -n 's/^ID_VENDOR=//p')"
- model="$( $UDEVADM info -n /dev/$1 -q property 2>/dev/null | sed -n 's/^ID_MODEL=//p' )"
+ vendor="$($UDEVADM info -q property /dev/$1 2>/dev/null | sed -n 's/^ID_VENDOR=//p')"
+ model="$( $UDEVADM info -q property /dev/$1 2>/dev/null | sed -n 's/^ID_MODEL=//p' )"
model=$(printf "%s %s" "$vendor" "$model" | sed -r 's/_/ /g; s/-//g; s/[[:space:]]+$//')
fi
@@ -467,7 +467,7 @@
case $bm in
_bm_read) m="data" ;;
_bm_thresh) m="thresholds" ;;
- _bm_dischg) m="discharge" ;;
+ _bm_dischg) m="recalibrate" ;;
esac
# concat method to output
if [ -n "$mlist" ]; then
@@ -527,6 +527,8 @@
# global param: $_bm_thresh, $_bat_idx, $_bf_start, $_bf_stop
local bsys sp thresh
+ [ "$_bm_thresh" != "none" ] || return 0 # no method available --> quit
+
for sp in start stop; do
get_threshold $sp; thresh=$?
@@ -572,6 +574,8 @@
# global param: $_bm_dischg, $_bat_idx, $_bf_dischg
local force
+ [ "$_bm_dischg" != "none" ] || return 0 # no method available --> quit
+
get_force_discharge $1; force=$?
if [ $force -lt 2 ]; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/man/tlp.8 new/TLP-1.2.2/man/tlp.8
--- old/TLP-1.2.1/man/tlp.8 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/man/tlp.8 2019-05-04 19:49:18.000000000 +0200
@@ -71,10 +71,6 @@
battery and recharge to 100%.
.
.TP
-.B stat
-Same as tlp\-stat.
-.
-.TP
.B diskid
Show disk ids for configuration.
.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/tlp-func-base.in new/TLP-1.2.2/tlp-func-base.in
--- old/TLP-1.2.1/tlp-func-base.in 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/tlp-func-base.in 2019-05-04 19:49:18.000000000 +0200
@@ -9,10 +9,11 @@
# ----------------------------------------------------------------------------
# Constants
-readonly TLPVER="1.2.1"
+readonly TLPVER="1.2.2"
readonly CONFFILE=@TLP_CONF@
readonly RUNDIR=@TLP_RUN@
+readonly VARDIR=@TLP_VAR@
readonly FLOCK=flock
readonly HDPARM=hdparm
@@ -476,6 +477,9 @@
# it's a real ThinkPad --> save model substring
_tpmodel=$(echo $pv | sed -r 's/^Think[Pp]ad //')
fi
+ else
+ # not a ThinkPad: get DMI product string
+ pv="$(read_dmi product_version)"
fi
if [ -n "$_tpmodel" ]; then
@@ -514,11 +518,10 @@
# +------------ +------+------+------+
# battery | none | 2 | 0 | 1 |
# status: | discharging | 1 | 0 | 1 |
- # | idle | 0 | 0 | 1 |
- #
- # Note: existing AC online status has precendence over any battery status
+ # | idle | 0 | 0 | 0 |
local psrc
+ local ac0seen=
_syspwr=
for psrc in /sys/class/power_supply/*; do
@@ -531,26 +534,29 @@
Mains|USB)
# AC detected
# skip device to simulate broken AC detection
- [ "$X_SIMULATE_AC_QUIRK" = "1" ] && continue
+ [ "$X_SIMULATE_AC_QUIRK" = "2" ] && continue
# check if online
if [ "$(read_sysf $psrc/online)" = "1" ]; then
- # AC online
+ # AC online --> end iteration
_syspwr=0
echo_debug "ps" "get_sys_power_supply(${psrc##/*/}).ac_online: syspwr=$_syspwr"
+ break
else
- # AC offline means battery
- _syspwr=1
- echo_debug "ps" "get_sys_power_supply(${psrc##/*/}).ac_offline: syspwr=$_syspwr"
+ # AC offline could mean battery, but quirky hardware exists
+ # --> just remember and continue to look for batteries
+ ac0seen=$psrc
fi
- break # AC found --> end search
;;
Battery)
# battery detected
- # --> inspect unless discharging battery has been found beforehand
+ # --> inspect unless a discharging battery has been found beforehand
[ "$_syspwr" = "1" ] && continue
+ # skip device to simulate broken battery detection
+ [ "$X_SIMULATE_BAT_QUIRK" = "2" ] && continue
+
case "$(read_sysf $psrc/status)" in
Discharging)
if ! lockpeek_tlp tlp_discharge; then
@@ -587,10 +593,17 @@
esac
done
- # set _syspwr to unknown if we haven't seen any AC/battery power source so far
if [ -z "$_syspwr" ]; then
- _syspwr=2
- echo_debug "ps" "get_sys_power_supply.unknown: syspwr=$_syspwr"
+ # _syspwr result yet undecided
+ if [ -n "$ac0seen" ]; then
+ # no battery seen but AC offline remembered --> battery
+ _syspwr=1
+ echo_debug "ps" "get_sys_power_supply(${ac0seen##/*/}).ac_offline: syspwr=$_syspwr"
+ else
+ # we haven't seen any AC/battery power source --> unknown
+ _syspwr=2
+ echo_debug "ps" "get_sys_power_supply.unknown: syspwr=$_syspwr"
+ fi
fi
return $_syspwr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/tlp-stat.in new/TLP-1.2.2/tlp-stat.in
--- old/TLP-1.2.1/tlp-stat.in 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/tlp-stat.in 2019-05-04 19:49:18.000000000 +0200
@@ -381,7 +381,7 @@
elif [ -f $CPU_BOOST_ALL_CTRL ]; then
# show turbo boost info
- get_sysval $CPU_BOOST_ALL_CTRL; boost=$?
+ boost=$(read_sysval $CPU_BOOST_ALL_CTRL)
# simple test for attribute "w" doesn't work, so actually write
if write_sysf "$boost" $CPU_BOOST_ALL_CTRL; then
@@ -403,27 +403,32 @@
# --- show x86 energy perf policy info
if cmd_exists $ENERGYPERF; then
# check CPU support
- $ENERGYPERF -r > /dev/null 2>&1
+ eperf=$($ENERGYPERF -r 2> /dev/null)
case $? in
- 0) # parse x86_energy_perf_policy output:
- # - replace numbers with descriptive strings
- # - remove ":"
- # - indent and align
- $ENERGYPERF -r 2>/dev/null | grep -v 'HWP_' | \
- sed -r 's/://;
- s/(0x0000000000000000|EPB 0)/performance/;
- s/(0x0000000000000004|EPB 4)/balance-performance/;
- s/(0x0000000000000006|EPB 6)/default/;
- s/(0x0000000000000008|EPB 8)/balance-power/;
- s/(0x000000000000000f|EPB 15)/power/' | \
- awk '{ printf "x86_energy_perf_policy.%-31s = %s %s\n", $1, $2, $3; }'
+ 0) if [ -n "$eperf" ]; then
+ # parse x86_energy_perf_policy output:
+ # - replace numbers with descriptive strings
+ # - remove ":"
+ # - indent and align
+ $ENERGYPERF -r 2>/dev/null | grep -v 'HWP_' | \
+ sed -r 's/://;
+ s/(0x0000000000000000|EPB 0)/performance/;
+ s/(0x0000000000000004|EPB 4)/balance-performance/;
+ s/(0x0000000000000006|EPB 6)/default/;
+ s/(0x0000000000000008|EPB 8)/balance-power/;
+ s/(0x000000000000000f|EPB 15)/power/' | \
+ awk '{ printf "x86_energy_perf_policy.%-31s = %s %s\n", $1, $2, $3; }'
+ printf "\n"
+ else
+ # newer versions produce zero output for unsupported CPUs
+ printf "x86_energy_perf_policy: unsupported CPU.\n\n"
+ fi
;;
- 1) echo "x86_energy_perf_policy: unsupported CPU." ;;
- 2) echo "x86_energy_perf_policy: program for your kernel not installed." ;;
- *) echo "x86_energy_perf_policy: not available." ;;
+ 1) printf "x86_energy_perf_policy: unsupported CPU.\n\n" ;;
+ 2) printf "x86_energy_perf_policy: program for your kernel not installed.\n\n" ;;
+ *) printf "x86_energy_perf_policy: not available.\n\n" ;;
esac
- echo
else
echo "x86_energy_perf_policy: program not installed."
echo
@@ -808,7 +813,7 @@
ensum=0
# --- show availability of (ThinkPad) battery features
- echo "+++ Battery Features"
+ echo "+++ Battery Features: Charge Thresholds and Recalibrate"
# native ACPI kernel battery API
case $_natacpi in
@@ -864,8 +869,8 @@
0) echo "+++ ThinkPad Battery Status: $batt" ;;
esac
else
- # laptop or ThinkPad without feature support
- echo "+++ Battery Status"
+ # non-featured ThinkPad or other laptop make
+ echo "+++ Battery Status: $batt"
fi
case $_bm_read in
@@ -989,7 +994,7 @@
if [ $bcnt -eq 0 ]; then
# no battery detected
printf "+++ Battery Status\n"
- printf "No batteries detected.\n\n"
+ printf "No battery data available.\n\n"
elif [ $bcnt -gt 1 ] && [ $efsum -ne 0 ]; then
# more than one battery detected --> show charge total
perl -e 'printf ("%-59s = %6.1f [%%]\n", "+++ Charge total", 100.0 * '$ensum' / '$efsum');'
@@ -1028,8 +1033,13 @@
if is_thinkpad; then
# add ThinkPad specific recommendations
- [ $_tpsmapi -eq 128 ] \
- && reout="${reout}Install tp-smapi kernel modules for ThinkPad battery thresholds and recalibration\n"
+ if [ $_tpsmapi -eq 128 ]; then
+ if supports_tpsmapi_and_tpacpi; then
+ reout="${reout}Install tp-smapi kernel modules for extended battery info (e.g. the cycle count)\n"
+ else
+ reout="${reout}Install tp-smapi kernel modules for ThinkPad battery thresholds and recalibration\n"
+ fi
+ fi
case $_tpacpi in
127) missing="tpacpi-bat program" ;;
128) missing="acpi_call kernel module" ;;
@@ -1053,6 +1063,7 @@
if [ -n "$reout" ]; then
echo "+++ Recommendations"
# shellcheck disable=SC2059
+ # don't change to %s, $reout contains blanks and \n!
printf "$reout" | sed -r 's/^/\* /'
echo
fi
@@ -1086,7 +1097,13 @@
jdone=0
if cmd_exists $JOURNALCTL; then
# retrieve trace output from journal, rc=1 if journald has no data available
- $JOURNALCTL -p debug --no-pager SYSLOG_IDENTIFIER=tlp 2> /dev/null && jdone=1
+ if [ $show_verbose -eq 1 ]; then
+ # verbose: show all output
+ $JOURNALCTL -p debug --no-pager SYSLOG_IDENTIFIER=tlp 2> /dev/null && jdone=1
+ else
+ # non-verbose: show output since last reboot only
+ $JOURNALCTL -p debug --no-pager SYSLOG_IDENTIFIER=tlp -b 2> /dev/null && jdone=1
+ fi
fi
if [ "$jdone" = "0" ]; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/TLP-1.2.1/tlp.bash_completion new/TLP-1.2.2/tlp.bash_completion
--- old/TLP-1.2.1/tlp.bash_completion 2019-03-18 18:08:25.000000000 +0100
+++ new/TLP-1.2.2/tlp.bash_completion 2019-05-04 19:49:18.000000000 +0200
@@ -5,8 +5,9 @@
local bats b
bats=$( {
- for b in /sys/class/power_supply/BAT*; do
- if [ $(cat $b/present 2> /dev/null) = "1" ]; then
+ for b in /sys/class/power_supply/*; do
+ if [ "$(cat $b/present 2> /dev/null)" = "1" ] \
+ && [ "$(cat $b/type)" = "Battery" ]; then
echo "${b##/*/} "
fi
done } )
@@ -67,8 +68,8 @@
local cur prev words cword opts
_init_completion || return
- opts="--battery --config --disk --pcie --pev --psup --processor --rfkill
- --system --temp --usb --warn --trace --verbose"
+ opts="--battery --config --disk --graphics --pcie --pev --psup --processor
+ --rfkill --system --temp --usb --warn --trace --verbose"
if [ $cword -eq 1 ]; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
1
0
Hello community,
here is the log from the commit of package openQA for openSUSE:Factory checked in at 2019-05-24 11:30:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openQA (Old)
and /work/SRC/openSUSE:Factory/.openQA.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA"
Fri May 24 11:30:38 2019 rev:67 rq:704781 version:4.6.1558532409.ab91f319
Changes:
--------
--- /work/SRC/openSUSE:Factory/openQA/openQA-test.changes 2019-05-21 10:38:29.675160736 +0200
+++ /work/SRC/openSUSE:Factory/.openQA.new.5148/openQA-test.changes 2019-05-24 11:30:42.245416990 +0200
@@ -1,0 +2,12 @@
+Wed May 22 14:34:05 UTC 2019 - coolo(a)suse.com
+
+- Update to version 4.6.1558532409.ab91f319:
+ * Install qemu-uefi-aarch64 on aarch64 in bootstrap
+ * Use less noisy perl style for $comment->label
+ * Prevent accessing comment label without check for undef
+ * Ensure that module names are escaped
+ * List remaining failed modules on mouseover
+ * Allow listing bugs by the time of reporting
+ * Require YAML::XS >= 0.67
+
+-------------------------------------------------------------------
openQA.changes: same change
Old:
----
openQA-4.6.1558084113.18c6f052.obscpio
New:
----
openQA-4.6.1558532409.ab91f319.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openQA-test.spec ++++++
--- /var/tmp/diff_new_pack.Zt7qci/_old 2019-05-24 11:30:43.169416752 +0200
+++ /var/tmp/diff_new_pack.Zt7qci/_new 2019-05-24 11:30:43.173416751 +0200
@@ -18,7 +18,7 @@
%define short_name openQA
Name: %{short_name}-test
-Version: 4.6.1558084113.18c6f052
+Version: 4.6.1558532409.ab91f319
Release: 0
Summary: Test package for openQA
License: GPL-2.0-or-later
++++++ openQA.spec ++++++
--- /var/tmp/diff_new_pack.Zt7qci/_old 2019-05-24 11:30:43.213416741 +0200
+++ /var/tmp/diff_new_pack.Zt7qci/_new 2019-05-24 11:30:43.225416737 +0200
@@ -36,7 +36,7 @@
# runtime requirements that also the testsuite needs
%define t_requires perl(DBD::Pg) perl(DBIx::Class) perl(Config::IniFiles) perl(SQL::Translator) perl(Date::Format) perl(File::Copy::Recursive) perl(DateTime::Format::Pg) perl(Net::OpenID::Consumer) perl(Mojolicious::Plugin::RenderFile) perl(Mojolicious::Plugin::AssetPack) perl(aliased) perl(Config::Tiny) perl(DBIx::Class::DynamicDefault) perl(DBIx::Class::Schema::Config) perl(DBIx::Class::Storage::Statistics) perl(IO::Socket::SSL) perl(Data::Dump) perl(DBIx::Class::OptimisticLocking) perl(Text::Markdown) perl(Net::DBus) perl(JSON::Validator) perl(YAML::XS) perl(IPC::Run) perl(Archive::Extract) perl(CSS::Minifier::XS) perl(JavaScript::Minifier::XS) perl(Time::ParseDate) perl(Sort::Versions) perl(Mojo::RabbitMQ::Client) perl(BSD::Resource) perl(Cpanel::JSON::XS) perl(Pod::POM) perl(Mojo::IOLoop::ReadWriteProcess) perl(Minion) perl(Mojo::Pg) perl(Mojo::SQLite) perl(Minion::Backend::SQLite)
Name: openQA
-Version: 4.6.1558084113.18c6f052
+Version: 4.6.1558532409.ab91f319
Release: 0
Summary: The openQA web-frontend, scheduler and tools
License: GPL-2.0-or-later
@@ -62,6 +62,7 @@
Requires: dbus-1
Requires: perl(Minion) >= 9.09
Requires: perl(Mojo::RabbitMQ::Client) >= 0.2
+Requires: perl(YAML::XS) >= 0.67
# needed for test suite
Requires: git-core
Requires: openQA-client = %{version}
++++++ Dockerfile ++++++
--- /var/tmp/diff_new_pack.Zt7qci/_old 2019-05-24 11:30:43.285416722 +0200
+++ /var/tmp/diff_new_pack.Zt7qci/_new 2019-05-24 11:30:43.285416722 +0200
@@ -92,7 +92,7 @@
'perl(Mojolicious::Plugin::AssetPack)' \
'perl(Mojolicious::Plugin::RenderFile)' \
'perl(JSON::Validator)' \
- 'perl(YAML::XS)' \
+ 'perl(YAML::XS) >= 0.67' \
'perl(Net::DBus)' \
'perl(Net::OpenID::Consumer)' \
'perl(Net::SNMP)' \
++++++ openQA-4.6.1558084113.18c6f052.obscpio -> openQA-4.6.1558532409.ab91f319.obscpio ++++++
/work/SRC/openSUSE:Factory/openQA/openQA-4.6.1558084113.18c6f052.obscpio /work/SRC/openSUSE:Factory/.openQA.new.5148/openQA-4.6.1558532409.ab91f319.obscpio differ: char 49, line 1
++++++ openQA.obsinfo ++++++
--- /var/tmp/diff_new_pack.Zt7qci/_old 2019-05-24 11:30:43.385416697 +0200
+++ /var/tmp/diff_new_pack.Zt7qci/_new 2019-05-24 11:30:43.389416695 +0200
@@ -1,5 +1,5 @@
name: openQA
-version: 4.6.1558084113.18c6f052
-mtime: 1558084113
-commit: 18c6f052526a4753172bd7564c074db368da2128
+version: 4.6.1558532409.ab91f319
+mtime: 1558532409
+commit: ab91f319b2e395242078b4c5d2bd85e915c5a626
1
0
Hello community,
here is the log from the commit of package os-autoinst for openSUSE:Factory checked in at 2019-05-24 11:30:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/os-autoinst (Old)
and /work/SRC/openSUSE:Factory/.os-autoinst.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "os-autoinst"
Fri May 24 11:30:32 2019 rev:60 rq:704780 version:4.5.1558432600.6c62e09d
Changes:
--------
--- /work/SRC/openSUSE:Factory/os-autoinst/os-autoinst-test.changes 2019-05-17 23:42:32.133933501 +0200
+++ /work/SRC/openSUSE:Factory/.os-autoinst.new.5148/os-autoinst-test.changes 2019-05-24 11:30:36.013418595 +0200
@@ -1,0 +2,6 @@
+Tue May 21 09:56:52 UTC 2019 - okurz(a)suse.com
+
+- Update to version 4.5.1558432600.6c62e09d:
+ * Don't modify backend vars when running test
+
+-------------------------------------------------------------------
os-autoinst.changes: same change
Old:
----
os-autoinst-4.5.1557827957.ce72694e.obscpio
New:
----
os-autoinst-4.5.1558432600.6c62e09d.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ os-autoinst-test.spec ++++++
--- /var/tmp/diff_new_pack.GgDbW1/_old 2019-05-24 11:30:37.209418287 +0200
+++ /var/tmp/diff_new_pack.GgDbW1/_new 2019-05-24 11:30:37.213418286 +0200
@@ -19,7 +19,7 @@
%define name_ext -test
%define short_name os-autoinst
Name: %{short_name}%{?name_ext}
-Version: 4.5.1557827957.ce72694e
+Version: 4.5.1558432600.6c62e09d
Release: 0
Summary: test package for os-autoinst
License: GPL-2.0-or-later
++++++ os-autoinst.spec ++++++
--- /var/tmp/diff_new_pack.GgDbW1/_old 2019-05-24 11:30:37.253418276 +0200
+++ /var/tmp/diff_new_pack.GgDbW1/_new 2019-05-24 11:30:37.273418270 +0200
@@ -17,7 +17,7 @@
Name: os-autoinst
-Version: 4.5.1557827957.ce72694e
+Version: 4.5.1558432600.6c62e09d
Release: 0
Summary: OS-level test automation
License: GPL-2.0-or-later
++++++ os-autoinst-4.5.1557827957.ce72694e.obscpio -> os-autoinst-4.5.1558432600.6c62e09d.obscpio ++++++
/work/SRC/openSUSE:Factory/os-autoinst/os-autoinst-4.5.1557827957.ce72694e.obscpio /work/SRC/openSUSE:Factory/.os-autoinst.new.5148/os-autoinst-4.5.1558432600.6c62e09d.obscpio differ: char 49, line 1
++++++ os-autoinst.obsinfo ++++++
--- /var/tmp/diff_new_pack.GgDbW1/_old 2019-05-24 11:30:37.389418240 +0200
+++ /var/tmp/diff_new_pack.GgDbW1/_new 2019-05-24 11:30:37.389418240 +0200
@@ -1,5 +1,5 @@
name: os-autoinst
-version: 4.5.1557827957.ce72694e
-mtime: 1557827957
-commit: ce72694e9743fa6841fe470f9505a7db76f880cf
+version: 4.5.1558432600.6c62e09d
+mtime: 1558432600
+commit: 6c62e09dfa463ac608dd6ef071b99f60c37dabfb
1
0
Hello community,
here is the log from the commit of package gnome-multi-writer for openSUSE:Factory checked in at 2019-05-24 11:30:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-multi-writer (Old)
and /work/SRC/openSUSE:Factory/.gnome-multi-writer.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-multi-writer"
Fri May 24 11:30:28 2019 rev:17 rq:704776 version:3.32.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-multi-writer/gnome-multi-writer.changes 2019-05-03 22:46:04.243720199 +0200
+++ /work/SRC/openSUSE:Factory/.gnome-multi-writer.new.5148/gnome-multi-writer.changes 2019-05-24 11:30:30.885419916 +0200
@@ -1,0 +2,7 @@
+Wed May 22 13:15:11 UTC 2019 - Dominique Leuenberger <dimstar(a)opensuse.org>
+
+- Update to version 3.32.1:
+ + This fixes a memory corruption issue causing the UI to crash
+ and also fixes some build issues.
+
+-------------------------------------------------------------------
Old:
----
gnome-multi-writer-3.32.0.tar.xz
New:
----
gnome-multi-writer-3.32.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-multi-writer.spec ++++++
--- /var/tmp/diff_new_pack.aAkjbl/_old 2019-05-24 11:30:31.721419700 +0200
+++ /var/tmp/diff_new_pack.aAkjbl/_new 2019-05-24 11:30:31.725419699 +0200
@@ -17,14 +17,13 @@
Name: gnome-multi-writer
-Version: 3.32.0
+Version: 3.32.1
Release: 0
Summary: Program for writing an ISO file to multiple USB devices at once
License: GPL-2.0-or-later
Group: System/GUI/GNOME
URL: https://wiki.gnome.org/Apps/MultiWriter
Source0: https://download.gnome.org/sources/gnome-multi-writer/3.32/%{name}-%{versio…
-
BuildRequires: docbook-utils-minimal
BuildRequires: gobject-introspection-devel >= 0.9.8
BuildRequires: hicolor-icon-theme
++++++ gnome-multi-writer-3.32.0.tar.xz -> gnome-multi-writer-3.32.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-multi-writer-3.32.0/RELEASE new/gnome-multi-writer-3.32.1/RELEASE
--- old/gnome-multi-writer-3.32.0/RELEASE 2019-03-08 13:14:45.000000000 +0100
+++ new/gnome-multi-writer-3.32.1/RELEASE 2019-05-22 15:07:11.000000000 +0200
@@ -2,13 +2,13 @@
* Write NEWS entries in the same format as usual.
-git log --format="%s" GNOME_MULTI_WRITER_3_30_0.. | grep -i -v trivial | grep -v Merge | uniq
+git log --format="%s" GNOME_MULTI_WRITER_3_32_0.. | grep -i -v trivial | grep -v Merge | uniq
Add any user visible changes into ../data/appdata/org.gnome.MultiWriter.appdata.xml.in
* Commit changes in git:
-git commit -a -m "Release version 3.32.0"
-git tag -s GNOME_MULTI_WRITER_3_32_0 -m "==== Version 3.32.0 ===="
+git commit -a -m "Release version 3.32.1"
+git tag -s GNOME_MULTI_WRITER_3_32_1 -m "==== Version 3.32.1 ===="
ninja dist
git push --tags
git push
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-multi-writer-3.32.0/data/appdata/org.gnome.MultiWriter.appdata.xml.in new/gnome-multi-writer-3.32.1/data/appdata/org.gnome.MultiWriter.appdata.xml.in
--- old/gnome-multi-writer-3.32.0/data/appdata/org.gnome.MultiWriter.appdata.xml.in 2019-03-08 13:14:45.000000000 +0100
+++ new/gnome-multi-writer-3.32.1/data/appdata/org.gnome.MultiWriter.appdata.xml.in 2019-05-22 15:07:11.000000000 +0200
@@ -61,6 +61,14 @@
Validate with `appstream-util validate *.appdata.xml`
-->
<releases>
+ <release date="2019-05-22" version="3.32.1">
+ <description>
+ <p>
+ This fixes a memory corruption issue causing the UI to crash and also
+ fixes some build issues.
+ </p>
+ </description>
+ </release>
<release date="2019-03-08" version="3.32.0">
<description>
<p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-multi-writer-3.32.0/meson.build new/gnome-multi-writer-3.32.1/meson.build
--- old/gnome-multi-writer-3.32.0/meson.build 2019-03-08 13:14:45.000000000 +0100
+++ new/gnome-multi-writer-3.32.1/meson.build 2019-05-22 15:07:11.000000000 +0200
@@ -1,5 +1,5 @@
project('gnome-multi-writer', 'c',
- version : '3.32.0',
+ version : '3.32.1',
default_options : ['warning_level=1'],
meson_version : '>=0.46.0'
)
@@ -80,6 +80,7 @@
gtk = dependency('gtk+-3.0', version : '>= 3.11.2')
gio = dependency('gio-2.0')
+gio_unix = dependency('gio-unix-2.0')
gusb = dependency('gusb', version : '>= 0.2.7')
udisks = dependency('udisks2')
gudev = dependency('gudev-1.0')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-multi-writer-3.32.0/po/fr.po new/gnome-multi-writer-3.32.1/po/fr.po
--- old/gnome-multi-writer-3.32.0/po/fr.po 2019-03-08 13:14:45.000000000 +0100
+++ new/gnome-multi-writer-3.32.1/po/fr.po 2019-05-22 15:07:11.000000000 +0200
@@ -7,80 +7,62 @@
# geecko <geecko.dev(a)free.fr>, 2015
# Jérôme Fenal <jfenal(a)gmail.com>, 2015
# Guillaume Bernard <translate(a)filorin.fr>, 2015.
+# Charles Monzat <charles.monzat(a)numericable.fr>, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-multi-writer\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"multi-writer&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2015-04-06 07:18+0000\n"
-"PO-Revision-Date: 2015-09-20 22:35+0200\n"
-"Last-Translator: Guillaume Bernard <translate(a)filorin.fr>\n"
-"Language-Team: français <gnomefr(a)traduc.org>\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-multi-writer/"
+"issues\n"
+"POT-Creation-Date: 2018-09-04 18:36+0000\n"
+"PO-Revision-Date: 2019-01-07 19:03+0100\n"
+"Last-Translator: Charles Monzat <charles.monzat(a)numericable.fr>\n"
+"Language-Team: GNOME French Team <gnomefr(a)traduc.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Gtranslator 2.91.6\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"X-Generator: Gtranslator 3.30.0\n"
-#. TRANSLATORS: Application window title
#. TRANSLATORS: the application name
#. set the title
-#: ../data/gmw-main.ui.h:2
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:2
-#: ../data/org.gnome.MultiWriter.desktop.in.h:1 ../src/gmw-main.c:855
+#. TRANSLATORS: Application window title
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:8
+#: data/org.gnome.MultiWriter.desktop.in:3 src/gmw-main.c:795
+#: src/gmw-main.ui:98
msgid "MultiWriter"
msgstr "MultiWriter"
-#. TRANSLATORS: button to start the copy
-#: ../data/gmw-main.ui.h:4
-msgid "Start Copying"
-msgstr "Démarrer la copie"
-
-#. TRANSLATORS: app menu item for the file chooser
-#: ../data/gmw-menus.ui.h:2
-msgid "Import ISO file…"
-msgstr "Importer un fichier ISO..."
-
-#. TRANSLATORS: app menu item for the About UI
-#: ../data/gmw-menus.ui.h:4
-msgid "_About"
-msgstr "_À propos"
-
-#. TRANSLATORS: app menu item for Quit
-#: ../data/gmw-menus.ui.h:6
-msgid "_Quit"
-msgstr "_Quitter"
-
#. TRANSLATORS: one-line description for the app
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:4
-#: ../data/org.gnome.MultiWriter.desktop.in.h:2 ../src/gmw-main.c:1380
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:10
+#: data/org.gnome.MultiWriter.desktop.in:4 src/gmw-main.c:1273
msgid "Write an ISO file to multiple USB devices at once"
msgstr "Écrire un fichier ISO sur plusieurs périphériques USB à la fois"
#. TRANSLATORS: AppData description marketing paragraph
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:6
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:13
msgid ""
"GNOME MultiWriter can be used to write an ISO file to multiple USB devices "
"at once. Supported drive sizes are between 1GB and 32GB."
msgstr ""
"GNOME MultiWriter peut être utilisé pour écrire une image ISO sur plusieurs "
-"supports en même temps. Les tailles de lecteur supportées vont de 1Go à 32Go."
+"supports en même temps. Les tailles de lecteur supportées vont de 1 Go à "
+"32 Go."
#. TRANSLATORS: QA refers to quality assurance, aka people testing stuff,
#. GNOME refers to the desktop environment
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:9
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:20
msgid ""
"MultiWriter may be useful for QA testing, to create a GNOME Live image for a "
"code sprint or to create hundreds of LiveUSB drives for a trade show."
msgstr ""
-"MultiWriter peut être utile pour les tests d'assurance qualité, pour créer "
+"MultiWriter peut être utile pour les tests d’assurance qualité, pour créer "
"une image de GNOME pour un sprint de code ou créer des centaines de clés USB "
"Live pour un salon ou un événement."
#. TRANSLATORS: saturate as in the throughput can get no more
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:11
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:26
msgid ""
"Writing a more than 10 devices simultaneously can easy saturate the USB bus "
"for most storage devices. There are two ways to write more devices in "
@@ -88,21 +70,21 @@
msgstr ""
"L’écriture simultanée sur plus de 10 périphériques peut facilement saturer "
"le bus USB pour la plupart des périphériques de stockage. Il y a deux façons "
-"d'écrire plusieurs périphériques en parallèle :"
+"d’écrire plusieurs périphériques en parallèle :"
#. TRANSLATORS: storage devices refers to the things we're writing to
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:13
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:33
msgid "Use USB 3.0 hubs, even if the storage devices are USB 2.0"
msgstr ""
"Utiliser un port USB 3.0 même si les périphériques de stockage sont USB 2.0"
#. TRANSLATORS: PCIe is the data bus, don't translate please
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:15
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:35
msgid "Install another USB 2.0 PCIe root hub"
msgstr "Installer une autre carte USB 2.0 PCIe"
#. TRANSLATORS: the ColorHug is an open hardware product, don't translate the name
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:17
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:38
msgid ""
"MultiWriter was originally written as part of the ColorHug project but was "
"split off as an independent application in 2015."
@@ -111,74 +93,85 @@
"en une application indépendante en 2015."
#. TRANSLATORS: the 1st screenshot caption
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:19
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:47
msgid "Initial screen for the application"
-msgstr "Écran d'accueil de l'application"
+msgstr "Écran d’accueil de l’application"
#. TRANSLATORS: the 2nd screenshot caption
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:21
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:52
msgid "Writing and verifying images"
msgstr "Écriture et vérification des images"
#. TRANSLATORS: the 3rd screenshot caption
-#: ../data/appdata/org.gnome.MultiWriter.appdata.xml.in.h:23
+#: data/appdata/org.gnome.MultiWriter.appdata.xml.in:57
msgid "All devices have been written"
msgstr "Tous les périphériques ont été écrits"
+#. TRANSLATORS: Do NOT translate or transliterate this text (this is an icon file name)!
+#: data/org.gnome.MultiWriter.desktop.in:6
+#| msgid "MultiWriter"
+msgid "org.gnome.MultiWriter"
+msgstr "org.gnome.MultiWriter"
+
+#. TRANSLATORS: these are desktop keywords - remember the trailing ';' :)
+#: data/org.gnome.MultiWriter.desktop.in:12
+msgid "Image;Writer;ISO;USB;"
+msgstr "Image;Écriture;ISO;USB;"
+
#. TRANSLATORS: schema summary
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:2
+#: data/org.gnome.MultiWriter.gschema.xml:6
msgid "The filename to write to the USB disks"
msgstr "Le nom du fichier à écrire sur les disques USB"
#. TRANSLATORS: schema description
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:4
+#: data/org.gnome.MultiWriter.gschema.xml:8
msgid "The filename of the ISO image to write to the connected USB disks."
msgstr ""
-"Le nom de fichier de l'image ISO à écrire sur les disques USB connectés."
+"Le nom de fichier de l’image ISO à écrire sur les disques USB connectés."
#. TRANSLATORS: schema summary
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:6
+#: data/org.gnome.MultiWriter.gschema.xml:13
msgid "The maximum number of threads to use"
-msgstr "Le nombre maximum fils d'exécution à utiliser"
+msgstr "Le nombre maximum de fils d’exécution à utiliser"
#. TRANSLATORS: schema description
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:8
+#: data/org.gnome.MultiWriter.gschema.xml:15
msgid "The maximum number of parallel threads to use when copying data."
msgstr ""
-"Le nombre maximum de fils d'exécution parallèles à utiliser lors de la copie "
+"Le nombre maximum de fils d’exécution parallèles à utiliser lors de la copie "
"de données."
#. TRANSLATORS: schema summary
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:10
+#: data/org.gnome.MultiWriter.gschema.xml:20
msgid "Completely blank drive when writing"
-msgstr "Effacer totalement le disque lors de l'écriture"
+msgstr "Effacer totalement le disque lors de l’écriture"
#. TRANSLATORS: schema description
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:12
+#: data/org.gnome.MultiWriter.gschema.xml:22
msgid "Write the ISO to the drive and then blank the remainder of the drive."
msgstr ""
-"Écrit l'image ISO sur le support et efface le reste de l'espace du disque."
+"Écrit l’image ISO sur le support et efface le reste de l’espace du disque."
#. TRANSLATORS: schema summary
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:14
+#: data/org.gnome.MultiWriter.gschema.xml:27
msgid "Verify the ISO image was written correctly"
msgstr "Vérification des données écrites"
#. TRANSLATORS: schema description
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:16
+#: data/org.gnome.MultiWriter.gschema.xml:29
msgid ""
"Read and verify the ISO image from each device after writing is complete."
msgstr ""
"Lecture et vérification sur chacun des périphériques après écriture de "
-"l'image ISO."
+"l’image ISO."
#. TRANSLATORS: schema summary
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:18
+#: data/org.gnome.MultiWriter.gschema.xml:34
msgid "Inspect the device before writing images"
-msgstr "Inspecter le périphérique avant l'écriture des images"
+msgstr "Inspecter le périphérique avant l’écriture des images"
#. TRANSLATORS: schema description
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:20
+#: data/org.gnome.MultiWriter.gschema.xml:36
msgid ""
"Inspect the device to verify the reported device size is the actual media "
"size."
@@ -187,164 +180,159 @@
"taille du média."
#. TRANSLATORS: schema summary
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:22
+#: data/org.gnome.MultiWriter.gschema.xml:41
msgid "Show a warning before writing to a drive"
msgstr "Montre une alerte avant écriture sur le support"
#. TRANSLATORS: schema description
-#: ../data/org.gnome.MultiWriter.gschema.xml.h:24
+#: data/org.gnome.MultiWriter.gschema.xml:43
msgid ""
"Show a warning dialog confirming that the device contents are to be erased."
msgstr ""
-"Montre une fenêtre d'alerte confirmant l'effacement des données contenues "
+"Montre une fenêtre d’alerte confirmant l’effacement des données contenues "
"sur le support"
-#. TRANSLATORS: these are desktop keywords - remember the trailing ';' :)
-#: ../data/org.gnome.MultiWriter.desktop.in.h:4
-msgid "Image;Writer;ISO;USB;"
-msgstr "Image;Écriture;ISO;USB;"
-
-#: ../data/org.gnome.MultiWriter.policy.in.h:1
+#: data/org.gnome.MultiWriter.policy.in:17
msgid "Check the device"
msgstr "Vérifier le périphérique"
-#: ../data/org.gnome.MultiWriter.policy.in.h:2
+#: data/org.gnome.MultiWriter.policy.in:18
msgid "Authentication is required to probe the device"
msgstr "Authentification nécessaire pour sonder le périphérique"
#. TRANSLATORS: The image has been written and verified to
#. * *one* device, not all
-#: ../src/gmw-device.c:294
+#: src/gmw-device.c:243
msgid "Written successfully"
msgstr "Écriture réussie"
#. TRANSLATORS: we're writing the image to the device
#. * and we now know the speed
-#: ../src/gmw-device.c:302
+#: src/gmw-device.c:251
#, c-format
msgid "Writing at %.1f MB/s…"
-msgstr "Écriture à %.1f Mio/s…"
+msgstr "Écriture à %.1f Mio/s…"
#. TRANSLATORS: we're writing the image to the USB device
-#: ../src/gmw-device.c:306
+#: src/gmw-device.c:255
msgid "Writing…"
msgstr "Écriture des données…"
#. TRANSLATORS: We're verifying the USB device contains
#. * the correct image data and we now know the speed
-#: ../src/gmw-device.c:315
+#: src/gmw-device.c:264
#, c-format
msgid "Verifying at %.1f MB/s…"
-msgstr "Vérification à %.1f Mio/s…"
+msgstr "Vérification à %.1f Mio/s…"
#. TRANSLATORS: We're verifying the USB device contains
#. * the correct image data
-#: ../src/gmw-device.c:320
+#: src/gmw-device.c:269
msgid "Verifying…"
msgstr "Vérification des données…"
#. TRANSLATORS: This is a generic no-name USB flash disk
-#: ../src/gmw-device.c:396
+#: src/gmw-device.c:331
msgid "USB Flash Drive"
msgstr "Disque flash USB"
#. TRANSLATORS: window title renaming labels
-#: ../src/gmw-main.c:317
+#: src/gmw-main.c:281
msgid "New hub label"
msgstr "Nouvelle étiquette du concentrateur"
#. TRANSLATORS: the application name
#. TRANSLATORS: the application name for the about UI
#. TRANSLATORS: A program to copy the LiveUSB image onto USB hardware
-#: ../src/gmw-main.c:487 ../src/gmw-main.c:1377 ../src/gmw-main.c:1833
+#: src/gmw-main.c:439 src/gmw-main.c:1270 src/gmw-main.c:1684
msgid "GNOME MultiWriter"
msgstr "GNOME MultiWriter"
#. TRANSLATORS: the success sound description
-#: ../src/gmw-main.c:489
+#: src/gmw-main.c:441
msgid "Image written successfully"
msgstr "Image écrite avec succès"
#. TRANSLATORS: copy aborted
-#: ../src/gmw-main.c:598 ../src/gmw-main.c:638 ../src/gmw-main.c:744
-#: ../src/gmw-main.c:779
+#: src/gmw-main.c:544 src/gmw-main.c:584 src/gmw-main.c:687 src/gmw-main.c:722
msgid "Cancelled"
msgstr "Annulée"
#. TRANSLATORS: we couldn't open the ISO file the user chose
-#: ../src/gmw-main.c:1020 ../src/gmw-main.c:1034
+#: src/gmw-main.c:942 src/gmw-main.c:956
msgid "Failed to open"
-msgstr "Impossible d'ouvrir"
+msgstr "Impossible d’ouvrir"
#. TRANSLATORS: window title for the file-chooser, file is an ISO
-#: ../src/gmw-main.c:1054
+#: src/gmw-main.c:973
msgid "Choose the file to write"
msgstr "Choisir le fichier à écrire"
#. TRANSLATORS: button title
-#: ../src/gmw-main.c:1058
+#. TRANSLATORS: button to cancel a copy process
+#: src/gmw-main.c:977 src/gmw-main.ui:115
msgid "Cancel"
msgstr "Annuler"
#. TRANSLATORS: button title
-#: ../src/gmw-main.c:1060
+#: src/gmw-main.c:979
msgid "Import"
msgstr "Importer"
#. TRANSLATORS: the file filter description, e.g. *.iso
-#: ../src/gmw-main.c:1064
+#: src/gmw-main.c:983
msgid "ISO files"
msgstr "Fichiers ISO"
#. TRANSLATORS: error dialog title:
#. * we probably didn't authenticate
-#: ../src/gmw-main.c:1231 ../src/gmw-main.c:1244
+#: src/gmw-main.c:1131 src/gmw-main.c:1150
msgid "Failed to copy"
msgstr "Impossible de copier"
#. TRANSLATORS: the inhibit reason
-#: ../src/gmw-main.c:1262
+#: src/gmw-main.c:1167
msgid "Writing ISO to devices"
-msgstr "Écriture de l'ISO sur les disques"
+msgstr "Écriture de l’ISO sur les disques"
#. TRANSLATORS: window title for the warning dialog
-#: ../src/gmw-main.c:1315
+#: src/gmw-main.c:1214
msgid "Write to all disks?"
-msgstr "Écrire sur tous les supports ?"
+msgstr "Écrire sur tous les supports ?"
#. TRANSLATORS: check that we can nuke everything from all disks
-#: ../src/gmw-main.c:1320
+#: src/gmw-main.c:1219
msgid "All data on the drives will be deleted."
msgstr "Toutes les données des périphériques seront effacées."
#. TRANSLATORS: if the image file is smaller than the disks and
#. * we've disabled wiping the device we only write enough data
#. * to transfer the image
-#: ../src/gmw-main.c:1325
+#: src/gmw-main.c:1224
msgid "The ISO file is smaller than the disk capacity."
msgstr "Le fichier ISO a une taille inférieure au disque."
#. TRANSLATORS: this could leave your personal files on the drive
-#: ../src/gmw-main.c:1330
+#: src/gmw-main.c:1229
msgid ""
"Some of the current contents of the drives could be still found using "
"forensic tools even after copying."
msgstr ""
"Certains des contenus actuels des disques pourraient être retrouvés en "
-"utilisant des outils d'analyse même après la copie."
+"utilisant des outils d’analyse même après la copie."
#. TRANSLATORS: button text for the warning dialog
-#: ../src/gmw-main.c:1337
+#: src/gmw-main.c:1236
msgid "I Understand"
msgstr "Je comprends"
#. TRANSLATORS: the title of the about window
-#: ../src/gmw-main.c:1375
+#: src/gmw-main.c:1268
msgid "About GNOME MultiWriter"
msgstr "À propos de GNOME MultiWriter"
#. TRANSLATORS: you can put your name here :)
-#: ../src/gmw-main.c:1385
+#: src/gmw-main.c:1278
msgid "translator-credits"
msgstr ""
"Clément Guérin <geecko.dev(a)free.fr>\n"
@@ -354,33 +342,53 @@
#. TRANSLATORS: a switch label: verify the image by
#. * reading back the original image from the device
-#: ../src/gmw-main.c:1438
+#: src/gmw-main.c:1325
msgid "Verify"
msgstr "Vérifier"
#. TRANSLATORS: a switch label: we write zeros after
#. * the image so it erases the entire device
-#: ../src/gmw-main.c:1444
+#: src/gmw-main.c:1331
msgid "Wipe"
msgstr "Effacer"
#. TRANSLATORS: a switch label: we check the device
#. * is actually the size it says it is
-#: ../src/gmw-main.c:1450
+#: src/gmw-main.c:1337
msgid "Probe"
msgstr "Sonder"
#. TRANSLATORS: command line option
-#: ../src/gmw-main.c:1817
+#: src/gmw-main.c:1668
msgid "Allow renaming the labels on hubs"
msgstr "Autorise le renommage des étiquettes de concentrateurs."
#. TRANSLATORS: command line option
-#: ../src/gmw-main.c:1820 ../src/gmw-probe.c:535
+#: src/gmw-main.c:1671 src/gmw-probe.c:497
msgid "Show extra debugging information"
msgstr "Afficher des informations de débogage supplémentaires"
#. TRANSLATORS: the user has sausages for fingers
-#: ../src/gmw-main.c:1839
+#: src/gmw-main.c:1690
msgid "Failed to parse command line options"
msgstr "Impossible de traiter les options de ligne de commande"
+
+#. TRANSLATORS: button to start the copy
+#: src/gmw-main.ui:102
+msgid "Start Copying"
+msgstr "Démarrer la copie"
+
+#. TRANSLATORS: app menu item for the file chooser
+#: src/gmw-menus.ui:7
+msgid "Import ISO file…"
+msgstr "Importer un fichier ISO…"
+
+#. TRANSLATORS: app menu item for the About UI
+#: src/gmw-menus.ui:13
+msgid "_About"
+msgstr "À _propos"
+
+#. TRANSLATORS: app menu item for Quit
+#: src/gmw-menus.ui:17
+msgid "_Quit"
+msgstr "_Quitter"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-multi-writer-3.32.0/src/gmw-device.c new/gnome-multi-writer-3.32.1/src/gmw-device.c
--- old/gnome-multi-writer-3.32.0/src/gmw-device.c 2019-03-08 13:14:45.000000000 +0100
+++ new/gnome-multi-writer-3.32.1/src/gmw-device.c 2019-05-22 15:07:11.000000000 +0200
@@ -28,6 +28,7 @@
#include "gmw-device.h"
struct _GmwDevice {
+ GObject parent_instance;
GError *error; /* the error, if any */
GMutex mutex; /* mutex for the device */
GmwDeviceState state; /* the #GmwDeviceState, e.g. %GMW_DEVICE_STATE_WRITE */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-multi-writer-3.32.0/src/gmw-main.c new/gnome-multi-writer-3.32.1/src/gmw-main.c
--- old/gnome-multi-writer-3.32.0/src/gmw-main.c 2019-03-08 13:14:45.000000000 +0100
+++ new/gnome-multi-writer-3.32.1/src/gmw-main.c 2019-05-22 15:07:11.000000000 +0200
@@ -1244,7 +1244,7 @@
GList *windows;
GtkWindow *parent = NULL;
const gchar *authors[] = { "Richard Hughes", NULL };
- const gchar *copyright = "Copyright \xc2\xa9 2014-2015 Richard Hughes";
+ const gchar *copyright = "Copyright \xc2\xa9 2014-2018 Richard Hughes";
windows = gtk_application_get_windows (GTK_APPLICATION (priv->application));
if (windows)
@@ -1260,7 +1260,7 @@
"comments", _("Write an ISO file to multiple USB devices at once"),
"copyright", copyright,
"license-type", GTK_LICENSE_GPL_2_0,
- "logo-icon-name", "gnome-multi-writer",
+ "logo-icon-name", "org.gnome.MultiWriter",
/* TRANSLATORS: you can put your name here :) */
"translator-credits", _("translator-credits"),
"version", VERSION,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-multi-writer-3.32.0/src/meson.build new/gnome-multi-writer-3.32.1/src/meson.build
--- old/gnome-multi-writer-3.32.0/src/meson.build 2019-03-08 13:14:45.000000000 +0100
+++ new/gnome-multi-writer-3.32.1/src/meson.build 2019-05-22 15:07:11.000000000 +0200
@@ -18,6 +18,7 @@
include_directories('..'),
],
dependencies : [
+ gio_unix,
gtk,
gusb,
udisks,
1
0
Hello community,
here is the log from the commit of package tumbler for openSUSE:Factory checked in at 2019-05-24 11:30:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tumbler (Old)
and /work/SRC/openSUSE:Factory/.tumbler.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tumbler"
Fri May 24 11:30:22 2019 rev:30 rq:704768 version:0.2.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/tumbler/tumbler.changes 2018-10-25 09:08:27.434429183 +0200
+++ /work/SRC/openSUSE:Factory/.tumbler.new.5148/tumbler.changes 2019-05-24 11:30:26.913420939 +0200
@@ -1,0 +2,18 @@
+Fri May 17 20:28:30 UTC 2019 - Vinzenz Vietzke <vinz(a)vinzv.de>
+
+- Update to version 0.2.4
+ - Check for sparse video files only on plugin side
+ - Set Max file sizes
+ - Add Fujifilm RAF support (bxo#14522)
+ - Add more media types for audio cover thumbnails (bxo#12041)
+ - Fix a typo in desktop-thumbnailer-provider.c (bxo#14925)
+ - Update URLs in README and configure.ac
+ - Fix g_type_class_add_private is deprecated
+ - Bump glib version
+ - Translation Updates
+- Added bcond to build with sources from git master branch
+- Switched to %autosetup for simpler maintenance
+- Switch urls to https://
+- Cleaned up spec file
+
+-------------------------------------------------------------------
Old:
----
tumbler-0.2.3.tar.bz2
New:
----
tumbler-0.2.4.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tumbler.spec ++++++
--- /var/tmp/diff_new_pack.PgYKmc/_old 2019-05-24 11:30:27.741420726 +0200
+++ /var/tmp/diff_new_pack.PgYKmc/_new 2019-05-24 11:30:27.745420725 +0200
@@ -1,7 +1,7 @@
#
# spec file for package tumbler
#
-# Copyright (c) 2018 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
@@ -15,17 +15,18 @@
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
-
-%define libname libtumbler-1-0
+%bcond_with git
%bcond_with libffmpegthumbnailer
+%define libname libtumbler-1-0
+
Name: tumbler
-Version: 0.2.3
+Version: 0.2.4
Release: 0
Summary: Thumbnail Management for Xfce
License: GPL-2.0-or-later AND LGPL-2.1-or-later
Group: Productivity/Graphics/Other
-Url: http://www.xfce.org/
-Source: http://archive.xfce.org/src/apps/%{name}/0.2/%{name}-%{version}.tar.bz2
+Url: https://docs.xfce.org/xfce/thunar/tumbler
+Source: https://archive.xfce.org/src/apps/%{name}/0.2/%{name}-%{version}.tar.bz2
BuildRequires: intltool
BuildRequires: pkgconfig(gio-2.0) >= 2.26.0
BuildRequires: pkgconfig(gio-unix-2.0) >= 2.26.0
@@ -35,9 +36,9 @@
# GdkPibuxf thumbnailer plugin
BuildRequires: pkgconfig(gdk-pixbuf-2.0) >= 2.14
# FreeType2 font thumbnailer plugin
-BuildRequires: freetype2-devel
+BuildRequires: pkgconfig(freetype2)
# JPEG thumbnailer plugin with EXIF support
-BuildRequires: libjpeg-devel
+BuildRequires: pkgconfig(libjpeg)
%if %{with libffmpegthumbnailer}
# ffmpeg video thumbnailer plugin
BuildRequires: pkgconfig(libffmpegthumbnailer)
@@ -104,11 +105,17 @@
Provides translations to the package %{name}
%prep
-%setup -q
+%autosetup
%build
-%configure --disable-static
-make %{?_smp_mflags} V=1
+%if %{with git}
+NOCONFIGURE=1 ./autogen.sh
+%configure \
+ --disable-static
+%else
+%configure
+%endif
+%make_build
%install
%make_install
@@ -124,9 +131,8 @@
%postun -n %{libname} -p /sbin/ldconfig
%files
-%defattr(-,root,root)
-%doc AUTHORS ChangeLog NEWS README TODO
%license COPYING
+%doc AUTHORS ChangeLog NEWS README TODO
%dir %{_sysconfdir}/xdg/tumbler/
%config(noreplace) %{_sysconfdir}/xdg/tumbler/tumbler.rc
%dir %{_libdir}/tumbler-1
@@ -152,21 +158,16 @@
%{_datadir}/dbus-1/services/*.service
%files -n %{libname}
-%defattr(-,root,root)
%license COPYING
%{_libdir}/libtumbler-1.so.*
%files lang -f %{name}.lang
-%defattr(-,root,root)
-
%files devel
-%defattr(-,root,root)
%{_includedir}/tumbler-1
%{_libdir}/pkgconfig/tumbler-1.pc
%{_libdir}/libtumbler-1.so
%files doc
-%defattr(-,root,root)
%dir %{_datadir}/gtk-doc
%dir %{_datadir}/gtk-doc/html
%doc %{_datadir}/gtk-doc/html/tumbler
++++++ tumbler-0.2.3.tar.bz2 -> tumbler-0.2.4.tar.bz2 ++++++
++++ 10116 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package thunar for openSUSE:Factory checked in at 2019-05-24 11:30:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/thunar (Old)
and /work/SRC/openSUSE:Factory/.thunar.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "thunar"
Fri May 24 11:30:19 2019 rev:75 rq:704767 version:1.8.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/thunar/thunar.changes 2019-01-28 20:50:39.689764922 +0100
+++ /work/SRC/openSUSE:Factory/.thunar.new.5148/thunar.changes 2019-05-24 11:30:21.385422363 +0200
@@ -1,0 +2,59 @@
+Mon May 20 14:12:38 UTC 2019 - Maurizio Galli <maurizio.galli(a)gmail.com>
+
+- Fixed Xfce bug trackers in previous changelog entry
+
+-------------------------------------------------------------------
+Mon May 20 12:05:38 UTC 2019 - Marcel Kuehlhorn <tux93(a)opensuse.org>
+
+- Update to version 1.8.6
+ * Job is now optional for thunar_io_scan_directory
+ * Expand scroll window of file operation progress dialog (bxo#14946)
+ * Fix compiler error -Wcast-function-type (GCC 8)
+ * Bump glib minimal required version
+ * Fix g_type_class_add_private is deprecated
+ * Small code cleanup
+ * Fix pathbar to on middle click open folders in new tabs (bxo#15302)
+ * Translation updates: Danish
+- Dropped thunar-job-optional.patch since it was fixed upstream
+
+-------------------------------------------------------------------
+Sat May 18 12:45:03 UTC 2019 - Maurizio Galli <maurizio.galli(a)gmail.com>
+
+- Added patch from upstream: thunar-job-optional.patch
+ prevent Thunar segfault at startup:
+ make Job optional for thunar_io_scan_directory
+
+-------------------------------------------------------------------
+Sat May 18 08:50:57 UTC 2019 - Maurizio Galli <maurizio.galli(a)gmail.com>
+
+- Update to version 1.8.5
+ - Do not exit when dbus name registration fails (bxo#15149)
+ - tree view jumps (scrolls) when clicking on a directory (bxo#15174)
+ - Correctly check if destination is writable (bxo#14718)
+ - Make tree-view 'Move to Trash' icon the same as in main pane
+ - Make toggle for the delete entry affect tree-view side pane too
+ - Pathbar buttons are now resized on folder rename (bxo#15024)
+ - Load templates synchronously (bxo#15200)
+ - delete key in tree-view can delete the user home folder (bxo#15095)
+ - Hide unneeded context menu entries for folder "Trash" in tree view
+ - crash after clicking when XDG_SESSION_TYPE isn't set (bxo#15366)
+ - man page incorrectly suggests '-v' instead of '-V'
+ - Fix how wallpaper is set on Gnome
+ - SEGV (11) on USB-flash connection (bxo#13813)
+ - Fix session startup priority
+ - Fix queued context menu popup
+ - Restore right-click drag and drop functionality (bxo#14583)
+ - Translation updates
+- Dropped obsolete patch thunar-1.8.4-fix-context-menu.patch
+- Added conditional %bcond_with git for building with git master branch
+- Updated URL
+- Use /metainfo instead of /appdata and drop obsolete file edits
+- Other spec file cleanups
+
+-------------------------------------------------------------------
+Mon May 13 18:09:47 UTC 2019 - Maurizio Galli <maurizio.galli(a)gmail.com>
+
+- Added thunar-1.8.4-fix-context-menu.patch fixing "create document"
+ sub-menu not showing any content (boo#1134899)
+
+-------------------------------------------------------------------
Old:
----
Thunar-1.8.4.tar.bz2
New:
----
Thunar-1.8.6.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ thunar.spec ++++++
--- /var/tmp/diff_new_pack.E7uQhp/_old 2019-05-24 11:30:22.093422180 +0200
+++ /var/tmp/diff_new_pack.E7uQhp/_new 2019-05-24 11:30:22.093422180 +0200
@@ -17,14 +17,19 @@
%define libname libthunarx-3-0
+%bcond_with git
Name: thunar
-Version: 1.8.4
+Version: 1.8.6
Release: 0
Summary: File Manager for the Xfce Desktop Environment
License: GPL-2.0-or-later
Group: Productivity/File utilities
-Url: http://thunar.xfce.org/
-Source: http://archive.xfce.org/src/xfce/thunar/1.8/Thunar-%{version}.tar.bz2
+Url: https://docs.xfce.org/xfce/thunar/start
+%if %{with git}
+Source: Thunar-%{version}.tar.bz2
+%else
+Source: https://archive.xfce.org/src/xfce/thunar/1.8/Thunar-%{version}.tar.bz2
+%endif
Source100: %{name}-rpmlintrc
# PATCH-FIX-UPSTREAM thunar-use-xdg-icon-spec-icons.patch gber(a)opensuse.org -- Use generic icons that conform to the XDG Icon Naming Spec
Patch0: thunar-use-xdg-icon-spec-icons.patch
@@ -102,16 +107,27 @@
%description -n typelib-1_0-Thunarx-3_0
This package provides the GObject Introspection bindings for the Thunar extension library %{libname}.
-
%lang_package
%prep
%setup -q -n Thunar-%{version}
%patch0 -p1
%patch1 -p1
-sed -i -e 's#/metainfo#/appdata#' Makefile.{am,in}
%build
+%if %{with git}
+NOCONFIGURE=1 ./autogen.sh
+%configure \
+ --enable-maintainer-mode \
+ --with-helper-path-prefix=%{_libexecdir} \
+ --docdir=%{_datadir}/xfce4/Thunar \
+ --enable-dbus \
+ --enable-exif \
+ --enable-startup-notification \
+ --enable-pcre \
+ --enable-gtk-doc \
+ --disable-static
+%else
%configure \
--with-helper-path-prefix=%{_libexecdir} \
--docdir=%{_datadir}/xfce4/Thunar \
@@ -121,7 +137,8 @@
--enable-pcre \
--enable-gtk-doc \
--disable-static
-make %{?_smp_mflags} V=1
+%endif
+%make_build
%install
%make_install
@@ -146,8 +163,6 @@
%suse_update_desktop_file -i Thunar-folder-handler System Utility Core GTK FileManager
%find_lang Thunar %{?no_lang_C}
-# rename processed Thunar.desktop to match thunar.appdata.xml's name.
-mv %{buildroot}%{_datadir}/applications/Thunar.desktop %{buildroot}%{_datadir}/applications/thunar.desktop
%fdupes %{buildroot}%{_datadir}
@@ -169,7 +184,7 @@
%{_libdir}/thunarx-3
%{_libdir}/xfce4/panel/plugins/libthunar-tpa.so
%{_datadir}/Thunar
-%{_datadir}/appdata/org.xfce.thunar.appdata.xml
+%{_datadir}/metainfo/org.xfce.thunar.appdata.xml
%{_datadir}/applications/*.desktop
%{_datadir}/dbus-1/services/org.xfce.FileManager.service
%{_datadir}/dbus-1/services/org.xfce.Thunar.service
@@ -187,7 +202,6 @@
%{_libdir}/libthunarx-3.so.*
%files -n typelib-1_0-Thunarx-3_0
-%defattr(-,root,root)
%{_libdir}/girepository-1.0/Thunarx-3.0.typelib
%files devel
++++++ Thunar-1.8.4.tar.bz2 -> Thunar-1.8.6.tar.bz2 ++++++
++++ 94404 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-jdcal for openSUSE:Factory checked in at 2019-05-24 11:30:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jdcal (Old)
and /work/SRC/openSUSE:Factory/.python-jdcal.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jdcal"
Fri May 24 11:30:12 2019 rev:6 rq:704752 version:1.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jdcal/python-jdcal.changes 2018-12-24 11:38:32.317604030 +0100
+++ /work/SRC/openSUSE:Factory/.python-jdcal.new.5148/python-jdcal.changes 2019-05-24 11:30:17.005423491 +0200
@@ -1,0 +2,9 @@
+Wed May 22 12:52:40 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 1.4.1
+ * Remove testing for Python 2.6 and 3.3.
+ * Added testing for Python 3.7.
+ * Removed unused function `fpart`.
+- use pytest macro
+
+-------------------------------------------------------------------
Old:
----
jdcal-1.4.tar.gz
New:
----
jdcal-1.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jdcal.spec ++++++
--- /var/tmp/diff_new_pack.iSiznQ/_old 2019-05-24 11:30:17.745423300 +0200
+++ /var/tmp/diff_new_pack.iSiznQ/_new 2019-05-24 11:30:17.745423300 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jdcal
#
-# Copyright (c) 2018 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
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-jdcal
-Version: 1.4
+Version: 1.4.1
Release: 0
Summary: Julian dates from proleptic Gregorian and Julian calendars
License: BSD-2-Clause
@@ -55,7 +55,7 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-%python_exec test_jdcal.py
+%pytest
%files %{python_files}
%doc README.rst
++++++ jdcal-1.4.tar.gz -> jdcal-1.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jdcal-1.4/PKG-INFO new/jdcal-1.4.1/PKG-INFO
--- old/jdcal-1.4/PKG-INFO 2018-04-14 16:48:01.000000000 +0200
+++ new/jdcal-1.4.1/PKG-INFO 2019-04-24 12:21:00.000000000 +0200
@@ -1,19 +1,18 @@
Metadata-Version: 1.1
Name: jdcal
-Version: 1.4
+Version: 1.4.1
Summary: Julian dates from proleptic Gregorian and Julian calendars.
Home-page: https://github.com/phn/jdcal
Author: Prasanth Nair
Author-email: prasanthhn(a)gmail.com
License: BSD
-Description-Content-Type: UNKNOWN
Description: jdcal
=====
.. _TPM: http://www.sal.wisc.edu/~jwp/astro/tpm/tpm.html
.. _Jeffrey W. Percival: http://www.sal.wisc.edu/~jwp/
.. _IAU SOFA: http://www.iausofa.org/
- .. _pip: https://pypi.python.org/pypi/pip
+ .. _pip: https://pypi.org/project/pip/
.. _easy_install: https://setuptools.readthedocs.io/en/latest/easy_install.html
.. image:: https://travis-ci.org/phn/jdcal.svg?branch=master
@@ -166,12 +165,11 @@
Classifier: Topic :: Scientific/Engineering :: Astronomy
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jdcal-1.4/README.rst new/jdcal-1.4.1/README.rst
--- old/jdcal-1.4/README.rst 2018-04-14 15:48:16.000000000 +0200
+++ new/jdcal-1.4.1/README.rst 2019-04-24 12:02:28.000000000 +0200
@@ -4,7 +4,7 @@
.. _TPM: http://www.sal.wisc.edu/~jwp/astro/tpm/tpm.html
.. _Jeffrey W. Percival: http://www.sal.wisc.edu/~jwp/
.. _IAU SOFA: http://www.iausofa.org/
-.. _pip: https://pypi.python.org/pypi/pip
+.. _pip: https://pypi.org/project/pip/
.. _easy_install: https://setuptools.readthedocs.io/en/latest/easy_install.html
.. image:: https://travis-ci.org/phn/jdcal.svg?branch=master
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jdcal-1.4/jdcal.egg-info/PKG-INFO new/jdcal-1.4.1/jdcal.egg-info/PKG-INFO
--- old/jdcal-1.4/jdcal.egg-info/PKG-INFO 2018-04-14 16:48:01.000000000 +0200
+++ new/jdcal-1.4.1/jdcal.egg-info/PKG-INFO 2019-04-24 12:21:00.000000000 +0200
@@ -1,19 +1,18 @@
Metadata-Version: 1.1
Name: jdcal
-Version: 1.4
+Version: 1.4.1
Summary: Julian dates from proleptic Gregorian and Julian calendars.
Home-page: https://github.com/phn/jdcal
Author: Prasanth Nair
Author-email: prasanthhn(a)gmail.com
License: BSD
-Description-Content-Type: UNKNOWN
Description: jdcal
=====
.. _TPM: http://www.sal.wisc.edu/~jwp/astro/tpm/tpm.html
.. _Jeffrey W. Percival: http://www.sal.wisc.edu/~jwp/
.. _IAU SOFA: http://www.iausofa.org/
- .. _pip: https://pypi.python.org/pypi/pip
+ .. _pip: https://pypi.org/project/pip/
.. _easy_install: https://setuptools.readthedocs.io/en/latest/easy_install.html
.. image:: https://travis-ci.org/phn/jdcal.svg?branch=master
@@ -166,12 +165,11 @@
Classifier: Topic :: Scientific/Engineering :: Astronomy
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jdcal-1.4/jdcal.py new/jdcal-1.4.1/jdcal.py
--- old/jdcal-1.4/jdcal.py 2018-04-14 16:28:36.000000000 +0200
+++ new/jdcal-1.4.1/jdcal.py 2019-04-24 12:12:59.000000000 +0200
@@ -42,17 +42,12 @@
from __future__ import print_function
import math
-__version__ = "1.4"
+__version__ = "1.4.1"
MJD_0 = 2400000.5
MJD_JD2000 = 51544.5
-def fpart(x):
- """Return fractional part of given number."""
- return math.modf(x)[0]
-
-
def ipart(x):
"""Return integer part of given number."""
return math.modf(x)[1]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jdcal-1.4/setup.py new/jdcal-1.4.1/setup.py
--- old/jdcal-1.4/setup.py 2018-04-14 16:42:47.000000000 +0200
+++ new/jdcal-1.4.1/setup.py 2019-04-24 12:02:28.000000000 +0200
@@ -25,13 +25,12 @@
'Topic :: Scientific/Engineering :: Astronomy',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
- 'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jdcal-1.4/test_jdcal.py new/jdcal-1.4.1/test_jdcal.py
--- old/jdcal-1.4/test_jdcal.py 2018-04-14 16:23:07.000000000 +0200
+++ new/jdcal-1.4.1/test_jdcal.py 2019-04-24 12:02:28.000000000 +0200
@@ -2,14 +2,7 @@
import pytest
from jdcal import (
- fpart, ipart, is_leap, gcal2jd, jd2gcal, jcal2jd, jd2jcal, MJD_0)
-
-
-def test_fpart():
- assert round(fpart(20.345), 12) == 0.345
- assert round(fpart(-20.345), 12) == -0.345
- assert round(fpart(0.12345), 12) == 0.12345
- assert round(fpart(-0.6789), 12) == -0.6789
+ ipart, is_leap, gcal2jd, jd2gcal, jcal2jd, jd2jcal, MJD_0)
def test_ipart():
1
0
Hello community,
here is the log from the commit of package opi for openSUSE:Factory checked in at 2019-05-24 11:30:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/opi (Old)
and /work/SRC/openSUSE:Factory/.opi.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "opi"
Fri May 24 11:30:05 2019 rev:4 rq:704744 version:0.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/opi/opi.changes 2019-05-10 09:19:39.732452900 +0200
+++ /work/SRC/openSUSE:Factory/.opi.new.5148/opi.changes 2019-05-24 11:30:11.749424845 +0200
@@ -1,0 +2,14 @@
+Wed May 22 13:09:33 UTC 2019 - Yunhe Guo <i(a)guoyunhe.me>
+
+- Version 0.5.0
+ * Added
+ - API proxy server to prevent hard-coded passwords in the script
+
+-------------------------------------------------------------------
+Tue May 21 11:58:53 UTC 2019 - Yunhe Guo <i(a)guoyunhe.me>
+
+- Version 0.4.0
+ * Added
+ - PMBS (Packman Build Service) support
+
+-------------------------------------------------------------------
Old:
----
opi-0.3.2.tar.gz
New:
----
opi-0.5.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ opi.spec ++++++
--- /var/tmp/diff_new_pack.SNh5UY/_old 2019-05-24 11:30:12.429424670 +0200
+++ /var/tmp/diff_new_pack.SNh5UY/_new 2019-05-24 11:30:12.433424669 +0200
@@ -17,7 +17,7 @@
Name: opi
-Version: 0.3.2
+Version: 0.5.0
Release: 0
Summary: OBS Package Installer (CLI)
License: GPL-3.0
++++++ opi-0.3.2.tar.gz -> opi-0.5.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-0.3.2/CHANGELOG.md new/opi-0.5.0/CHANGELOG.md
--- old/opi-0.3.2/CHANGELOG.md 2019-05-09 13:19:14.000000000 +0200
+++ new/opi-0.5.0/CHANGELOG.md 2019-05-22 15:07:16.000000000 +0200
@@ -7,6 +7,18 @@
## [Unreleased]
+## [0.5.0]
+
+### Added
+
+- API proxy server to prevent hard-coded passwords in the script [#4](https://github.com/openSUSE-zh/opi/issues/4)
+
+## [0.4.0]
+
+### Added
+
+- PMBS (Packman Build Service) support [#5](https://github.com/openSUSE-zh/opi/issues/5)
+
## [0.3.2]
### Fixed
@@ -60,7 +72,9 @@
- Choose package and install
- Keep or remove repository after installation
-[Unreleased]: https://github.com/openSUSE-zh/opi/compare/v0.3.2...HEAD
+[Unreleased]: https://github.com/openSUSE-zh/opi/compare/v0.5.0...HEAD
+[0.5.0]: https://github.com/openSUSE-zh/opi/compare/v0.4.0...v0.5.0
+[0.4.0]: https://github.com/openSUSE-zh/opi/compare/v0.3.2...v0.4.0
[0.3.2]: https://github.com/openSUSE-zh/opi/compare/v0.3.1...v0.3.2
[0.3.1]: https://github.com/openSUSE-zh/opi/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/openSUSE-zh/opi/compare/v0.2.0...v0.3.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-0.3.2/README.md new/opi-0.5.0/README.md
--- old/opi-0.3.2/README.md 2019-05-09 13:19:14.000000000 +0200
+++ new/opi-0.5.0/README.md 2019-05-22 15:07:16.000000000 +0200
@@ -2,6 +2,11 @@
**O**BS **P**ackage **I**nstaller
+Search and install almost all packages available for openSUSE and SLE:
+
+1. openSUSE Build Service
+2. Packman
+
## System Requirements
- openSUSE Tumbleweed, openSUSE Leap 42.1+, SLE 12+
@@ -13,8 +18,24 @@
## Install
+### openSUSE Tumbleweed
+
+```
+sudo zypper install opi
```
-sudo zypper addrepo https://download.opensuse.org/repositories/home:guoyunhe/openSUSE_Tumblewee…
+
+## Leap and SLE
+
+```
+# Leap 15.0
+sudo zypper addrepo https://download.opensuse.org/repositories/home:guoyunhe/openSUSE_Leap_15.0…
+# Leap 15.1
+sudo zypper addrepo https://download.opensuse.org/repositories/home:guoyunhe/openSUSE_Leap_15.1…
+# Leap 42.3
+sudo zypper addrepo https://download.opensuse.org/repositories/home:guoyunhe/openSUSE_Leap_42.3…
+# SLE 15
+sudo zypper addrepo https://download.opensuse.org/repositories/home:guoyunhe/SLE_15/home:guoyun…
+
sudo zypper refresh
sudo zypper install opi
```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-0.3.2/opi new/opi-0.5.0/opi
--- old/opi-0.3.2/opi 2019-05-09 13:19:14.000000000 +0200
+++ new/opi-0.5.0/opi 2019-05-22 15:07:16.000000000 +0200
@@ -54,15 +54,15 @@
#
# API configuration
#
-my $username = 'wiki_hermes';
-my $password = 'w_h_p1';
-my $server = "https://$username:$password\@api.opensuse.org";
-
+my $obs_apiroot = 'https://api.opensuse.org';
+my $pmbs_apiroot = 'https://pmbs.links2linux.de';
#
# Search packages
#
-my @bins = search_published_binary(@ARGV);
+my @obs = search_published_binary('openSUSE', $obs_apiroot, @ARGV);
+my @pmbs = search_published_binary('Packman', $pmbs_apiroot, @ARGV);
+my @bins = sort_binaries(@obs, @pmbs);
my @binary_names = get_binary_names(@bins);
if (!scalar(@bins)) {
@@ -118,6 +118,7 @@
=cut
sub get_distribution {
+ my $prefix = shift;
my $config = Config::Tiny->read('/etc/os-release');
my $name = $config->{_}->{NAME};
my $version = $config->{_}->{VERSION};
@@ -126,15 +127,19 @@
$version = substr $version, 1, -1; # Remove quotes
}
if ($name eq 'openSUSE Tumbleweed') {
- return 'openSUSE:Factory';
+ $name = 'openSUSE:Factory';
} elsif ($name eq 'openSUSE Leap') {
- return 'openSUSE:Leap:' . $version;
+ $name = 'openSUSE:Leap:' . $version;
} elsif (substr($name, 0, 3) eq 'SLE') {
- return 'SLE' . $version;
+ $name = 'SLE' . $version;
} else {
print "Your distribution $name $version is not supported.\n";
exit 1;
}
+ if ($prefix) {
+ $name = 'openSUSE.org:' . $name;
+ }
+ return $name;
}
sub get_architecture {
@@ -238,10 +243,16 @@
$symbol = '?';
}
- my $colored_name = colored(substr($binary->{project}, 0, 39) . ' ' . $symbol, $color);
+ my $project = $binary->{project};
+ my $obs_instance = $binary->{obs_instance};
+ if ($obs_instance ne 'openSUSE') {
+ $project = "$obs_instance $project";
+ }
+
+ my $colored_name = colored(substr($project, 0, 39) . ' ' . $symbol, $color);
if ($number) {
- printf("%2d. %-50s | %-10s | %-10s\n", $number, $colored_name, $binary->{version}, $binary->{arch});
+ printf("%2d. %-50s | %-10s | %-10s\n", $number, $colored_name, substr($binary->{version}, 0, 10), $binary->{arch});
} else {
print $colored_name, " | ", $binary->{version}, " | ", $binary->{arch};
}
@@ -261,16 +272,23 @@
}
sub search_published_binary {
- my $distribution = get_distribution();
+ my $obs_instance = shift;
+ my $obs_apiroot = shift;
+
+ my $distribution = get_distribution($obs_instance ne 'openSUSE');
+
+ my $proxy_root = 'https://guoyunhe.me/opi/proxy/index.php';
my $endpoint = '/search/published/binary/id';
my $query_string = prepare_query_string(@_);
my $xpath = "contains-ic(\@name, $query_string) and path/project='$distribution'";
- my $url = $server . $endpoint . '?match=' . uri_escape($xpath);
+ my $url = $obs_apiroot . $endpoint . '?match=' . uri_escape($xpath);
+
+ my $prox_url = $proxy_root . '?obs_api_link=' . uri_escape($url) . '&obs_instance=' . $obs_instance;
- my $req = HTTP::Request->new(GET => $url);
+ my $req = HTTP::Request->new(GET => $prox_url);
my $ua = LWP::UserAgent->new;
my $resp = $ua->request($req);
if ($resp->is_success) {
@@ -284,6 +302,7 @@
foreach my $binary ($dom->findnodes('/collection/binary')) {
my %binary_data;
+ $binary_data{'obs_instance'} = $obs_instance;
$binary_data{'name'} = $binary->getAttribute('name');
$binary_data{'project'} = $binary->getAttribute('project');
$binary_data{'package'} = $binary->getAttribute('package');
@@ -295,33 +314,43 @@
$binary_data{'filepath'} = $binary->getAttribute('filepath');
$binary_data{'baseproject'} = $binary->getAttribute('baseproject');
$binary_data{'type'} = $binary->getAttribute('type');
- # Filter out ghost binary (package has been deleted, but binary still exists)
+
+ # Filter out ghost binary
+ # (package has been deleted, but binary still exists)
if ( ! $binary_data{'package'} ) {
next;
}
# Filter out branch projects
- if ( $binary->{project} =~ /:branches:/m ) {
+ if ( $binary_data{'project'} =~ /:branches:/m ) {
+ next;
+ }
+
+ # Filter out Packman personal projects
+ if (
+ $binary_data{'obs_instance'} ne 'openSUSE'
+ && is_personal_project($binary_data{'project'})
+ ) {
next;
}
# Filter out debuginfo, debugsource, buildsymbols packages
- if ( substr($binary->{'name'}, -10) eq '-debuginfo' ) {
+ if ( substr($binary_data{'name'}, -10) eq '-debuginfo' ) {
next;
- } elsif ( substr($binary->{'name'}, -12) eq '-debugsource' ) {
+ } elsif ( substr($binary_data{'name'}, -12) eq '-debugsource' ) {
next;
- } elsif ( substr($binary->{'name'}, -13) eq '-buildsymbols' ) {
+ } elsif ( substr($binary_data{'name'}, -13) eq '-buildsymbols' ) {
next;
}
# Filter out source packages
- if ( $binary->{'arch'} eq 'src' ) {
+ if ( $binary_data{'arch'} eq 'src' ) {
next;
}
# Filter architecture
- unless ( $binary->{'arch'} eq $arch || $binary->{'arch'} eq 'noarch') {
- unless ( $binary->{'arch'} eq 'i586' && $arch eq 'x86_64' ) {
+ unless ( $binary_data{'arch'} eq $arch || $binary_data{'arch'} eq 'noarch') {
+ unless ( $binary_data{'arch'} eq 'i586' && $arch eq 'x86_64' ) {
next;
}
}
@@ -329,7 +358,7 @@
push @collection, \%binary_data;
}
- return sort { -get_binary_weight($a) <=> -get_binary_weight($b) } @collection;
+ return @collection;
}
else {
if ($resp->code == 413) {
@@ -358,6 +387,10 @@
return @names;
}
+sub sort_binaries {
+ return sort { -get_binary_weight($a) <=> -get_binary_weight($b) } @_;
+}
+
sub get_binary_weight {
my $binary = shift;
my $weight = 0;
@@ -419,14 +452,21 @@
=cut
sub install_binary {
- my $binary = $_[0];
+ my $binary = shift;
my $name = $binary->{name};
+ my $obs_instance = $binary->{obs_instance};
my $arch = $binary->{arch};
my $project = $binary->{project};
my $repository = $binary->{repository};
+ # Install Packman packages
+ if ($obs_instance eq 'Packman') {
+ add_packman_repo();
+
+ install_packman_packages("$name.$arch");
+ }
# Install official packages. Don't add repositories
- if (is_official_project($project)) {
+ elsif (is_official_project($project)) {
system "sudo zypper install $name.$arch";
}
# Install experimental and personal packages
@@ -448,9 +488,9 @@
return;
}
- add_packman_essentials_repo();
+ add_packman_repo(1);
- install_packman_essentials_packages(
+ install_packman_packages(
'ffmpeg',
'gstreamer-plugins-bad',
'gstreamer-plugins-libav',
@@ -467,7 +507,8 @@
exit;
}
-sub add_packman_essentials_repo {
+sub add_packman_repo {
+ my $dup = shift;
my $prefix = get_distribution();
$prefix =~ s/:/_/ig;
@@ -476,14 +517,17 @@
$prefix = 'openSUSE_Tumbleweed';
}
- system "sudo zypper addrepo --refresh --priority 90 https://ftp.gwdg.de/pub/linux/misc/packman/suse/$prefix/Essentials/packman-…";
+ system "sudo zypper addrepo --refresh --priority 90 https://ftp.gwdg.de/pub/linux/misc/packman/suse/$prefix/packman.repo";
system "sudo zypper refresh";
- system "sudo zypper dist-upgrade --from packman-essentials --allow-downgrade --allow-vendor-change";
+
+ if ($dup) {
+ system "sudo zypper dist-upgrade --from packman --allow-downgrade --allow-vendor-change";
+ }
}
-sub install_packman_essentials_packages {
+sub install_packman_packages {
my $packages = join ' ', @_;
- system "sudo zypper install --repo packman-essentials $packages";
+ system "sudo zypper install --repo packman $packages";
}
sub install_vs_code {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-0.3.2/proxy/.gitignore new/opi-0.5.0/proxy/.gitignore
--- old/opi-0.3.2/proxy/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/opi-0.5.0/proxy/.gitignore 2019-05-22 15:07:16.000000000 +0200
@@ -0,0 +1,2 @@
+vendor
+config.php
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-0.3.2/proxy/composer.json new/opi-0.5.0/proxy/composer.json
--- old/opi-0.3.2/proxy/composer.json 1970-01-01 01:00:00.000000000 +0100
+++ new/opi-0.5.0/proxy/composer.json 2019-05-22 15:07:16.000000000 +0200
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "davedevelopment/stiphle": "^0.9.2"
+ }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-0.3.2/proxy/composer.lock new/opi-0.5.0/proxy/composer.lock
--- old/opi-0.3.2/proxy/composer.lock 1970-01-01 01:00:00.000000000 +0100
+++ new/opi-0.5.0/proxy/composer.lock 2019-05-22 15:07:16.000000000 +0200
@@ -0,0 +1,70 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "8be3fec76a27c45a4bf9c51a99f497b1",
+ "packages": [
+ {
+ "name": "davedevelopment/stiphle",
+ "version": "0.9.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/davedevelopment/stiphle.git",
+ "reference": "76151e6474741adee258c1a4860a0460e319563b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/davedevelopment/stiphle/zipball/76151e6474741a…",
+ "reference": "76151e6474741adee258c1a4860a0460e319563b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.5",
+ "predis/predis": "^1.1"
+ },
+ "suggest": {
+ "doctrine/cache": "~1.0",
+ "predis/predis": "~1.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Stiphle": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dave Marshall",
+ "email": "dave.marshall(a)atstsolutions.co.uk",
+ "homepage": "http://davedevelopment.co.uk"
+ }
+ ],
+ "description": "Simple rate limiting/throttling for php",
+ "homepage": "http://github.com/davedevelopment/stiphle",
+ "keywords": [
+ "rate limit",
+ "rate limiting",
+ "throttle",
+ "throttling"
+ ],
+ "time": "2017-08-16T07:58:18+00:00"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": [],
+ "platform-dev": []
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-0.3.2/proxy/config.example.php new/opi-0.5.0/proxy/config.example.php
--- old/opi-0.3.2/proxy/config.example.php 1970-01-01 01:00:00.000000000 +0100
+++ new/opi-0.5.0/proxy/config.example.php 2019-05-22 15:07:16.000000000 +0200
@@ -0,0 +1,8 @@
+<?php
+
+# Copy and rename this file to 'config.php' and fill in your API credentials
+
+$obs_username = '';
+$obs_password = '';
+$pmbs_username = '';
+$pmbs_password = '';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-0.3.2/proxy/index.php new/opi-0.5.0/proxy/index.php
--- old/opi-0.3.2/proxy/index.php 1970-01-01 01:00:00.000000000 +0100
+++ new/opi-0.5.0/proxy/index.php 2019-05-22 15:07:16.000000000 +0200
@@ -0,0 +1,23 @@
+<?php
+
+# Test it with `php -S localhost:8000 index.php`
+
+require __DIR__ . '/vendor/autoload.php';
+require __DIR__ . '/config.php';
+
+# TODO add API rate limits.
+
+$obs_api_link = $_GET['obs_api_link'];
+$obs_instance = $_GET['obs_instance']; # OBS / Packman
+
+if ($obs_instance === 'openSUSE') {
+ $username = $obs_username;
+ $password = $obs_password;
+} elseif ($obs_instance === 'Packman') {
+ $username = $pmbs_username;
+ $password = $pmbs_password;
+}
+
+$obs_api_link = str_replace('://', "://$username:$password@", $obs_api_link);
+
+echo file_get_contents($obs_api_link);
1
0
Hello community,
here is the log from the commit of package mate-system-monitor for openSUSE:Factory checked in at 2019-05-24 11:29:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mate-system-monitor (Old)
and /work/SRC/openSUSE:Factory/.mate-system-monitor.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mate-system-monitor"
Fri May 24 11:29:59 2019 rev:19 rq:704737 version:1.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/mate-system-monitor/mate-system-monitor.changes 2019-05-16 22:04:45.962582179 +0200
+++ /work/SRC/openSUSE:Factory/.mate-system-monitor.new.5148/mate-system-monitor.changes 2019-05-24 11:30:03.869426874 +0200
@@ -1,0 +2,16 @@
+Sun May 12 18:13:56 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.22.1:
+ * Support 32 cpus.
+ * sysinfo: Show debian version.
+ * Show available disc space in ZFS.
+ * Show 32/64-bit Version intead of release for Arch Linux in
+ System tab.
+ * Show OpenIndiana release and kernel info in System tab.
+ * Show FreeBSD sysname, release, version in System tab.
+ * Fix openSUSE Tumbleweed rolling release info.
+ * gtk3: Use “program-name” property in gtk_show_about_dialog.
+ * help: Update copyright
+ * Update translations.
+
+-------------------------------------------------------------------
Old:
----
mate-system-monitor-1.22.0.tar.xz
New:
----
mate-system-monitor-1.22.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mate-system-monitor.spec ++++++
--- /var/tmp/diff_new_pack.qDXIw6/_old 2019-05-24 11:30:04.765426643 +0200
+++ /var/tmp/diff_new_pack.qDXIw6/_new 2019-05-24 11:30:04.769426642 +0200
@@ -18,7 +18,7 @@
%define _version 1.22
Name: mate-system-monitor
-Version: 1.22.0
+Version: 1.22.1
Release: 0
Summary: MATE Desktop system monitor
License: GPL-2.0-or-later
@@ -59,9 +59,7 @@
%lang_package
%prep
-%setup -q
-%patch0 -p1
-%patch1 -p1
+%autosetup -p1
%build
NOCONFIGURE=1 mate-autogen
++++++ mate-system-monitor-1.22.0.tar.xz -> mate-system-monitor-1.22.1.tar.xz ++++++
++++ 20735 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package suseprime-appindicator for openSUSE:Factory checked in at 2019-05-24 11:29:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/suseprime-appindicator (Old)
and /work/SRC/openSUSE:Factory/.suseprime-appindicator.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "suseprime-appindicator"
Fri May 24 11:29:39 2019 rev:1 rq:704719 version:0.1.0
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.suseprime-appindicator.new.5148/suseprime-appindicator.changes 2019-05-24 11:29:46.201431425 +0200
@@ -0,0 +1,5 @@
+-------------------------------------------------------------------
+Sat May 11 20:12:04 UTC 2019 - Stasiek Michalski <hellcp(a)mailbox.org>
+
+- Initial release
+
New:
----
suseprime-appindicator-0.1.0.tar.gz
suseprime-appindicator.changes
suseprime-appindicator.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ suseprime-appindicator.spec ++++++
#
# spec file for package suseprime-appindicator
#
# Copyright (c) 2019 Stasiek Michalski <hellcp(a)opensuse.org>.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# 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/
#
Name: suseprime-appindicator
Version: 0.1.0
Release: 0
Summary: SUSE Prime appindicator for switching between GPUs
Group: System/GUI/Other
License: GPL-2.0
Url: https://github.com/openSUSE/%{name}
Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz
BuildRequires: hicolor-icon-theme
BuildRequires: python-setuptools
BuildRequires: python3
Requires: suse-prime
Requires: python3-gobject
Supplements: (xfce4-indicator-plugin and suse-prime)
BuildArch: noarch
%description
SUSE Prime appindicator for switching between Nvidia/Intel GPUs.
%prep
%setup -q
%build
# Skip build
%install
python3 setup.py install --root=%{buildroot}
%files
%{_datadir}/icons/hicolor/symbolic/apps/*
%dir %{_datadir}/%{name}/
%{_datadir}/%{name}/scripts
%{_sysconfdir}/xdg/autostart/%{name}.desktop
%{_bindir}/%{name}
%{python3_sitelib}/suseprimeindicator*
%changelog
1
0
Hello community,
here is the log from the commit of package armadillo for openSUSE:Factory checked in at 2019-05-24 11:29:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/armadillo (Old)
and /work/SRC/openSUSE:Factory/.armadillo.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "armadillo"
Fri May 24 11:29:32 2019 rev:126 rq:704320 version:9.400.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/armadillo/armadillo.changes 2019-04-15 11:53:00.986577079 +0200
+++ /work/SRC/openSUSE:Factory/.armadillo.new.5148/armadillo.changes 2019-05-24 11:29:32.709434900 +0200
@@ -1,0 +2,18 @@
+Sat May 18 12:48:45 UTC 2019 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update to version 9.400.3:
+ + Faster cov() and cor()
+ + Added .as_col() and .as_row()
+ + Expanded .shed_rows() / .shed_cols() / .shed_slices() to
+ remove rows/columns/slices specified in a vector
+ + Expanded vectorise() to handle sparse matrices
+ + Expanded element-wise versions of max() and min() to handle
+ sparse matrices
+ + Optimised handling of sparse matrix expressions: sparse %
+ (sparse +- scalar) and sparse / (sparse +- scalar)
+ + Expanded eig_sym(), chol(), expmat_sym(), logmat_sympd(),
+ sqrtmat_sympd(), inv_sympd() to print a warning if the given
+ matrix is not symmetric
+ + More consistent detection of vector expressions
+
+-------------------------------------------------------------------
Old:
----
armadillo-9.300.2.tar.xz
New:
----
armadillo-9.400.3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ armadillo.spec ++++++
--- /var/tmp/diff_new_pack.JTxsPv/_old 2019-05-24 11:29:33.697434646 +0200
+++ /var/tmp/diff_new_pack.JTxsPv/_new 2019-05-24 11:29:33.701434645 +0200
@@ -12,13 +12,13 @@
# 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/
#
%define soname libarmadillo9
Name: armadillo
-Version: 9.300.2
+Version: 9.400.3
Release: 0
Summary: C++ matrix library with interfaces to LAPACK and ATLAS
License: Apache-2.0
++++++ armadillo-9.300.2.tar.xz -> armadillo-9.400.3.tar.xz ++++++
++++ 15268 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package perl-DBIx-Class-DeploymentHandler for openSUSE:Factory checked in at 2019-05-24 11:29:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-DBIx-Class-DeploymentHandler (Old)
and /work/SRC/openSUSE:Factory/.perl-DBIx-Class-DeploymentHandler.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-DBIx-Class-DeploymentHandler"
Fri May 24 11:29:26 2019 rev:10 rq:702485 version:0.002231
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-DBIx-Class-DeploymentHandler/perl-DBIx-Class-DeploymentHandler.changes 2018-01-24 15:29:51.000198499 +0100
+++ /work/SRC/openSUSE:Factory/.perl-DBIx-Class-DeploymentHandler.new.5148/perl-DBIx-Class-DeploymentHandler.changes 2019-05-24 11:29:31.289435266 +0200
@@ -1,0 +2,55 @@
+Sat May 11 05:06:17 UTC 2019 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to 0.002231
+ see /usr/share/doc/packages/perl-DBIx-Class-DeploymentHandler/Changes
+
+ 0.002231 2019-05-10 09:28:36-04:00 America/New_York
+ - Revert conversion to Moo; this code is now identical to v0.002224, with one
+ small fix from 0.002225, having to do with Pg chunk-splitting when there
+ is no semicolon
+
+-------------------------------------------------------------------
+Wed Apr 3 06:50:44 UTC 2019 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to 0.002230
+ see /usr/share/doc/packages/perl-DBIx-Class-DeploymentHandler/Changes
+
+ 0.002230 2019-03-14 18:31:07+00:00 Europe/London
+ - MooX::Role::Parameterized forces min perl 5.010
+
+ 0.002229 2019-03-14 18:13:25+00:00 Europe/London
+ - convert from Package::Variant to MooX::Role::Parameterized - fix #67
+
+ 0.002228 2019-03-14 07:13:33+00:00 Europe/London
+ - IO::All dep to 0.87 in case causing Win32 problem
+
+-------------------------------------------------------------------
+Wed Mar 13 15:28:17 UTC 2019 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to 0.002227
+ see /usr/share/doc/packages/perl-DBIx-Class-DeploymentHandler/Changes
+
+ 0.002227 2019-03-11 05:58:07+00:00 Europe/London
+ - test version-objects in 5.8-10 compatible way
+
+ 0.002226 2019-03-11 03:14:04+00:00 Europe/London
+ - relax the Pg chunk-splitting when no ";"
+ - better test of version-object on schema
+
+ 0.002225 2019-03-11 01:56:47+00:00 Europe/London
+ - convert to Type::Tiny
+ - Port to Moo
+ - convert parameterised role to Package::Variant
+ - convert file-handling to IO::All
+
+ 0.002224 2019-03-09 05:16:47+00:00 Europe/London
+ - binmode on all filehandles so lines always end LF - thanks @wchristian
+ - more sophisticated SQL parsing handles Pg $$ stuff - thanks @mrenvoize
+ for report
+
+ 0.002223 2019-03-07 01:36:36+00:00 Europe/London
+ - handle "package NAME VERSION" in a DBIx::Class::Schema - $VERSION
+ will be object
+ - add needed dep - thanks @wheinze
+
+-------------------------------------------------------------------
Old:
----
DBIx-Class-DeploymentHandler-0.002222.tar.gz
New:
----
DBIx-Class-DeploymentHandler-0.002231.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-DBIx-Class-DeploymentHandler.spec ++++++
--- /var/tmp/diff_new_pack.9q6ofL/_old 2019-05-24 11:29:32.273435012 +0200
+++ /var/tmp/diff_new_pack.9q6ofL/_new 2019-05-24 11:29:32.277435011 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-DBIx-Class-DeploymentHandler
#
-# Copyright (c) 2018 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,19 +12,19 @@
# 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/
#
Name: perl-DBIx-Class-DeploymentHandler
-Version: 0.002222
+Version: 0.002231
Release: 0
%define cpan_name DBIx-Class-DeploymentHandler
Summary: Extensible DBIx::Class deployment
-License: Artistic-1.0 or GPL-1.0+
+License: Artistic-1.0 OR GPL-1.0-or-later
Group: Development/Libraries/Perl
-Url: http://search.cpan.org/dist/DBIx-Class-DeploymentHandler/
-Source0: https://cpan.metacpan.org/authors/id/F/FR/FREW/%{cpan_name}-%{version}.tar.…
+Url: https://metacpan.org/release/%{cpan_name}
+Source0: https://cpan.metacpan.org/authors/id/M/MM/MMCCLIMON/%{cpan_name}-%{version}…
Source1: cpanspec.yml
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -35,6 +35,7 @@
BuildRequires: perl(DBD::SQLite) >= 1.35
BuildRequires: perl(DBIx::Class) >= 0.08121
BuildRequires: perl(Log::Contextual) >= 0.005005
+BuildRequires: perl(Module::Runtime) >= 0.001
BuildRequires: perl(Moo) >= 1.003
BuildRequires: perl(Moose) >= 1
BuildRequires: perl(MooseX::Role::Parameterized) >= 0.18
@@ -54,6 +55,7 @@
Requires: perl(Context::Preserve) >= 0.01
Requires: perl(DBIx::Class) >= 0.08121
Requires: perl(Log::Contextual) >= 0.005005
+Requires: perl(Module::Runtime) >= 0.001
Requires: perl(Moo) >= 1.003
Requires: perl(Moose) >= 1
Requires: perl(MooseX::Role::Parameterized) >= 0.18
@@ -102,11 +104,11 @@
%setup -q -n %{cpan_name}-%{version}
%build
-%{__perl} Makefile.PL INSTALLDIRS=vendor
-%{__make} %{?_smp_mflags}
+perl Makefile.PL INSTALLDIRS=vendor
+make %{?_smp_mflags}
%check
-%{__make} test
+make test
%install
%perl_make_install
++++++ DBIx-Class-DeploymentHandler-0.002222.tar.gz -> DBIx-Class-DeploymentHandler-0.002231.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/Changes new/DBIx-Class-DeploymentHandler-0.002231/Changes
--- old/DBIx-Class-DeploymentHandler-0.002222/Changes 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/Changes 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,42 @@
Revision history for DBIx-Class-DeploymentHandler
+0.002231 2019-05-10 09:28:36-04:00 America/New_York
+ - Revert conversion to Moo; this code is now identical to v0.002224, with one
+ small fix from 0.002225, having to do with Pg chunk-splitting when there
+ is no semicolon
+
+0.002230 2019-03-14 18:31:07+00:00 Europe/London
+ - MooX::Role::Parameterized forces min perl 5.010
+
+0.002229 2019-03-14 18:13:25+00:00 Europe/London
+ - convert from Package::Variant to MooX::Role::Parameterized - fix #67
+
+0.002228 2019-03-14 07:13:33+00:00 Europe/London
+ - IO::All dep to 0.87 in case causing Win32 problem
+
+0.002227 2019-03-11 05:58:07+00:00 Europe/London
+ - test version-objects in 5.8-10 compatible way
+
+0.002226 2019-03-11 03:14:04+00:00 Europe/London
+ - relax the Pg chunk-splitting when no ";"
+ - better test of version-object on schema
+
+0.002225 2019-03-11 01:56:47+00:00 Europe/London
+ - convert to Type::Tiny
+ - Port to Moo
+ - convert parameterised role to Package::Variant
+ - convert file-handling to IO::All
+
+0.002224 2019-03-09 05:16:47+00:00 Europe/London
+ - binmode on all filehandles so lines always end LF - thanks @wchristian
+ - more sophisticated SQL parsing handles Pg $$ stuff - thanks @mrenvoize
+ for report
+
+0.002223 2019-03-07 01:36:36+00:00 Europe/London
+ - handle "package NAME VERSION" in a DBIx::Class::Schema - $VERSION
+ will be object
+ - add needed dep - thanks @wheinze
+
0.002222 2018-01-06 10:25:42-08:00 America/Los_Angeles
- Stop defaulting to include DROP TABLE, introduced by fix in prior release
(Fixes GH#59, thanks for the report Eugen Konkov!)
@@ -7,6 +44,7 @@
0.002221 2017-09-27 21:19:42-04:00 America/New_York
- Allow easy changing the version storage table name, which makes subclassing
much less painful (Thanks Andrew Gregory!)
+ - Above change renamed database_version => initial_version
- Fix args passed to SQL::Translator::Diff
- Add Michael McClimon as comaint
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/LICENSE new/DBIx-Class-DeploymentHandler-0.002231/LICENSE
--- old/DBIx-Class-DeploymentHandler-0.002222/LICENSE 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/LICENSE 2019-05-10 15:28:52.000000000 +0200
@@ -1,4 +1,4 @@
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -12,7 +12,7 @@
--- The GNU General Public License, Version 1, February 1989 ---
-This software is Copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is Copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software, licensed under:
@@ -272,7 +272,7 @@
--- The Artistic License 1.0 ---
-This software is Copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is Copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software, licensed under:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/MANIFEST new/DBIx-Class-DeploymentHandler-0.002231/MANIFEST
--- old/DBIx-Class-DeploymentHandler-0.002222/MANIFEST 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/MANIFEST 2019-05-10 15:28:52.000000000 +0200
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.009.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.010.
Changes
LICENSE
MANIFEST
@@ -37,6 +37,7 @@
lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/VersionResultSet.pm
lib/DBIx/Class/DeploymentHandler/WithApplicatorDumple.pm
lib/DBIx/Class/DeploymentHandler/WithReasonableDefaults.pm
+t/00-report-prereqs.t
t/02-instantiation-alt-result-class.t
t/02-instantiation-no-ddl.t
t/02-instantiation-wo-component.t
@@ -53,6 +54,7 @@
t/alt-result-class-lib/DBICVersionAlt_v4.pm
t/author-pod-syntax.t
t/bugs/01-emailed-bug-01.t
+t/customised.t
t/deploy_methods/coderef-leakage.t
t/deploy_methods/script-helpers.t
t/deploy_methods/sql_translator.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/META.json new/DBIx-Class-DeploymentHandler-0.002231/META.json
--- old/DBIx-Class-DeploymentHandler-0.002222/META.json 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/META.json 2019-05-10 15:28:52.000000000 +0200
@@ -4,7 +4,7 @@
"Arthur Axel \"fREW\" Schmidt <frioux+cpan(a)gmail.com>"
],
"dynamic_config" : 0,
- "generated_by" : "Dist::Zilla version 6.009, CPAN::Meta::Converter version 2.150010",
+ "generated_by" : "Dist::Zilla version 6.010, CPAN::Meta::Converter version 2.150010",
"license" : [
"perl_5"
],
@@ -31,6 +31,7 @@
"Context::Preserve" : "0.01",
"DBIx::Class" : "0.08121",
"Log::Contextual" : "0.005005",
+ "Module::Runtime" : "0.001",
"Moo" : "1.003",
"Moose" : "1",
"MooseX::Role::Parameterized" : "0.18",
@@ -45,6 +46,9 @@
}
},
"test" : {
+ "recommends" : {
+ "DBIx::Class::Schema::Loader" : "0"
+ },
"requires" : {
"DBD::SQLite" : "1.35",
"File::Temp" : "0",
@@ -67,7 +71,7 @@
"web" : "https://github.com/frioux/DBIx-Class-DeploymentHandler"
}
},
- "version" : "0.002222",
- "x_serialization_backend" : "Cpanel::JSON::XS version 3.023"
+ "version" : "0.002231",
+ "x_serialization_backend" : "Cpanel::JSON::XS version 3.0239"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/META.yml new/DBIx-Class-DeploymentHandler-0.002231/META.yml
--- old/DBIx-Class-DeploymentHandler-0.002222/META.yml 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/META.yml 2019-05-10 15:28:52.000000000 +0200
@@ -12,7 +12,7 @@
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 0
-generated_by: 'Dist::Zilla version 6.009, CPAN::Meta::Converter version 2.150010'
+generated_by: 'Dist::Zilla version 6.010, CPAN::Meta::Converter version 2.150010'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -24,6 +24,7 @@
Context::Preserve: '0.01'
DBIx::Class: '0.08121'
Log::Contextual: '0.005005'
+ Module::Runtime: '0.001'
Moo: '1.003'
Moose: '1'
MooseX::Role::Parameterized: '0.18'
@@ -39,5 +40,5 @@
bugtracker: https://github.com/frioux/DBIx-Class-DeploymentHandler/issues
homepage: https://github.com/frioux/DBIx-Class-DeploymentHandler
repository: https://github.com/frioux/DBIx-Class-DeploymentHandler.git
-version: '0.002222'
+version: '0.002231'
x_serialization_backend: 'YAML::Tiny version 1.70'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/Makefile.PL new/DBIx-Class-DeploymentHandler-0.002231/Makefile.PL
--- old/DBIx-Class-DeploymentHandler-0.002222/Makefile.PL 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/Makefile.PL 2019-05-10 15:28:52.000000000 +0200
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.009.
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.010.
use strict;
use warnings;
@@ -21,6 +21,7 @@
"Context::Preserve" => "0.01",
"DBIx::Class" => "0.08121",
"Log::Contextual" => "0.005005",
+ "Module::Runtime" => "0.001",
"Moo" => "1.003",
"Moose" => 1,
"MooseX::Role::Parameterized" => "0.18",
@@ -41,7 +42,7 @@
"Test::Requires" => "0.06",
"aliased" => 0
},
- "VERSION" => "0.002222",
+ "VERSION" => "0.002231",
"test" => {
"TESTS" => "t/*.t t/bugs/*.t t/deploy_methods/*.t t/version_handlers/*.t t/version_storages/*.t"
}
@@ -56,6 +57,7 @@
"DBIx::Class" => "0.08121",
"File::Temp" => 0,
"Log::Contextual" => "0.005005",
+ "Module::Runtime" => "0.001",
"Moo" => "1.003",
"Moose" => 1,
"MooseX::Role::Parameterized" => "0.18",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/README new/DBIx-Class-DeploymentHandler-0.002231/README
--- old/DBIx-Class-DeploymentHandler-0.002222/README 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/README 2019-05-10 15:28:52.000000000 +0200
@@ -176,6 +176,25 @@
>
METHODS
+ This is just a "stub" section to make clear that the bulk of
+ implementation is documented in DBIx::Class::DeploymentHandler::Dad.
+ Since that is implemented using Moose class, see "ATTRIBUTES" in
+ DBIx::Class::DeploymentHandler::Dad and "ORTHODOX METHODS" in
+ DBIx::Class::DeploymentHandler::Dad for available attributes to pass to
+ "new", and methods callable on the resulting object.
+
+ new
+ my $s = My::Schema->connect(...);
+ my $dh = DBIx::Class::DeploymentHandler->new({
+ schema => $s,
+ databases => 'SQLite',
+ sql_translator_args => { add_drop_table => 0 },
+ });
+
+ See "ATTRIBUTES" in DBIx::Class::DeploymentHandler::Dad and "ORTHODOX
+ METHODS" in DBIx::Class::DeploymentHandler::Dad for available attributes
+ to pass to "new".
+
prepare_version_storage_install
$dh->prepare_version_storage_install
@@ -197,7 +216,7 @@
Arthur Axel "fREW" Schmidt <frioux+cpan(a)gmail.com>
COPYRIGHT AND LICENSE
- This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+ This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/cpanfile new/DBIx-Class-DeploymentHandler-0.002231/cpanfile
--- old/DBIx-Class-DeploymentHandler-0.002222/cpanfile 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/cpanfile 2019-05-10 15:28:52.000000000 +0200
@@ -4,6 +4,7 @@
requires 'Log::Contextual' => 0.005005;
requires 'Path::Class' => 0.26;
requires 'DBIx::Class' => 0.08121;
+requires 'Module::Runtime' => 0.001;
requires 'Moose' => 1.0;
requires 'Moo' => 1.003000;
requires 'MooseX::Role::Parameterized' => 0.18;
@@ -22,4 +23,5 @@
requires 'aliased' => 0;
requires 'Test::Requires' => 0.06;
requires 'File::Temp' => 0;
+ recommends 'DBIx::Class::Schema::Loader' => 0;
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/dist.ini new/DBIx-Class-DeploymentHandler-0.002231/dist.ini
--- old/DBIx-Class-DeploymentHandler-0.002222/dist.ini 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/dist.ini 2019-05-10 15:28:52.000000000 +0200
@@ -2,7 +2,7 @@
author = Arthur Axel "fREW" Schmidt <frioux+cpan(a)gmail.com>
license = Perl_5
copyright_holder = Arthur Axel "fREW" Schmidt
-version = 0.002222
+version = 0.002231
; authordep Pod::Weaver::Plugin::Ditaa
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Dad.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Dad.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Dad.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Dad.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::Dad;
-$DBIx::Class::DeploymentHandler::Dad::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::Dad::VERSION = '0.002231';
# ABSTRACT: Parent class for DeploymentHandlers
use Moose;
@@ -25,7 +25,10 @@
lazy_build => 1,
);
-sub _build_to_version { $_[0]->schema_version }
+sub _build_to_version {
+ my $version = $_[0]->schema_version;
+ ref($version) ? $version->numify : $version;
+}
has schema_version => (
is => 'ro',
@@ -262,7 +265,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator/Deprecated.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator/Deprecated.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator/Deprecated.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator/Deprecated.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::Deprecated;
-$DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::Deprecated::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::Deprecated::VERSION = '0.002231';
use Moose;
# ABSTRACT: (DEPRECATED) Use this if you are stuck in the past
@@ -125,7 +125,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator/ScriptHelpers.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator/ScriptHelpers.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator/ScriptHelpers.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator/ScriptHelpers.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::ScriptHelpers;
-$DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::ScriptHelpers::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::ScriptHelpers::VERSION = '0.002231';
# ABSTRACT: CodeRef Transforms for common use-cases in DBICDH Migrations
use strict;
@@ -211,7 +211,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator;
-$DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::VERSION = '0.002231';
use Moose;
# ABSTRACT: Manage your SQL and Perl migrations in nicely laid out directories
@@ -235,7 +235,7 @@
my ($self, $sql) = @_;
my $storage = $self->storage;
- $sql = [ _split_sql_chunk( @$sql ) ];
+ $sql = [ $self->_split_sql_chunk( @$sql ) ];
Dlog_trace { "Running SQL $_" } $sql;
foreach my $line (@{$sql}) {
@@ -252,29 +252,122 @@
return join "\n", @$sql
}
+my %STORAGE2FEATURE = (
+ SQLServer => {
+ txn => qr/begin\s+transaction\b/i,
+ comment => {
+ DD => 1, # --
+ HASH => 1,
+ SSTAR => 1, # /* */
+ DS => 1, # //
+ PERCENT => 1,
+ },
+ },
+ Sybase => {
+ txn => qr/begin\s+transaction\b/i,
+ comment => {
+ DD => 1,
+ SSTAR => 1,
+ DS => 1,
+ PERCENT => 1,
+ },
+ },
+ SQLite => {
+ txn => qr/begin\b/i,
+ comment => {
+ DD => 1,
+ HASH => 1,
+ },
+ },
+ MySQL => {
+ txn => qr/(begin\b|start\s+transaction\b)/i,
+ comment => {
+ DD => 1,
+ HASH => 1,
+ SS => 1,
+ },
+ },
+ Oracle => {
+ comment => {
+ DD => 1,
+ HASH => 1,
+ SS => 1,
+ },
+ },
+ Pg => {
+ txn => qr/begin\b/i,
+ chunk => sub {
+ my ($c) = @_;
+ my @ret;
+ my $accumulator = '';
+ while (length $c) {
+ if ($c =~ s/\A([^\$]*?);//s) {
+ $accumulator .= $1;
+ push @ret, $accumulator;
+ $accumulator = '';
+ } elsif (
+ $c =~ s/\A(
+ .*?
+ ( \$ [^\$]* \$ )
+ )//xs
+ ) {
+ # got a $...$ .. $...$ chunk
+ $accumulator .= $1;
+ my $anchor = $2;
+ $c =~ s/\A(
+ .*?
+ \Q$anchor\E
+ )//xs;
+ $accumulator .= $1;
+ } elsif ($c =~ s/\A\s*\z//s) {
+ push @ret, $accumulator;
+ $accumulator = '';
+ } else {
+ push @ret, $accumulator.$c;
+ $accumulator = '';
+ last;
+ }
+ }
+ @ret;
+ },
+ comment => {
+ DD => 1,
+ HASH => 1,
+ },
+ },
+);
+
# split a chunk o' SQL into statements
sub _split_sql_chunk {
- my @sql = map { split /;\n/, $_ } @_;
-
- for ( @sql ) {
- # strip transactions
- s/^(?:BEGIN|BEGIN TRANSACTION|COMMIT).*//mgi;
-
- # trim whitespaces
- s/^\s+//gm;
- s/\s+$//gm;
-
- # remove comments
- s/^--.*//gm;
-
- # remove blank lines
- s/^\n//gm;
-
- # put on single line
- s/\n/ /g;
- }
-
- return grep $_, @sql;
+ my $self = shift;
+ my @sql = map { $_.'' } @_; # copy
+ my $storage_class = ref $self->storage;
+ $storage_class =~ s/.*://;
+ my $feature = $STORAGE2FEATURE{$storage_class} || $STORAGE2FEATURE{MySQL};
+ for ( @sql ) {
+ # strip transactions
+ my $txn = $feature->{txn};
+ s/^\s*($txn|COMMIT\b).*//mgi if $txn;
+ # remove comments
+ my $comment = $feature->{comment};
+ s{--.*}{}gm if $comment->{DD};
+ s{/\* .*? \*/}{}xs if $comment->{SS};
+ s{//.*}{}gm if $comment->{DS};
+ s{#.*}{}gm if $comment->{HASH};
+ s{%.*}{}gm if $comment->{PERCENT};
+ }
+ my $chunk = $feature->{chunk} || sub { split /;\n/, $_[0] };
+ @sql = map $chunk->($_), @sql;
+ for ( @sql ) {
+ # trim whitespace
+ s/^\s+//gm;
+ s/\s+$//gm;
+ # remove blank lines
+ s/^\n//gm;
+ # put on single line
+ s/\n/ /g;
+ }
+ return grep $_, @sql;
}
sub _run_sql {
@@ -553,6 +646,7 @@
}
}
open my $file, q(>), $filename;
+ binmode $file;
print {$file} join ";\n", @$sql, '';
close $file;
}
@@ -674,6 +768,7 @@
}
open my $file, q(>), $diff_file;
+ binmode $file;
print {$file} join ";\n", @{$self->_sqldiff_from_yaml($from_version, $to_version, $db, $direction)};
close $file;
}
@@ -686,7 +781,7 @@
local $/ = undef; #sluuuuuurp
open my $fh, '<', $file;
- return [ _split_sql_chunk( <$fh> ) ];
+ return [ $self->_split_sql_chunk( <$fh> ) ];
}
sub downgrade_single_step {
@@ -758,6 +853,7 @@
}
open my $file, q(>), $filename;
+ binmode $file;
print {$file} $yml;
close $file;
}
@@ -1086,7 +1182,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Deprecated.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Deprecated.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Deprecated.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Deprecated.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::Deprecated;
-$DBIx::Class::DeploymentHandler::Deprecated::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::Deprecated::VERSION = '0.002231';
# ABSTRACT: (DEPRECATED) Use this if you are stuck in the past
use Moose;
@@ -133,7 +133,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/HandlesDeploy.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/HandlesDeploy.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/HandlesDeploy.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/HandlesDeploy.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::HandlesDeploy;
-$DBIx::Class::DeploymentHandler::HandlesDeploy::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::HandlesDeploy::VERSION = '0.002231';
use Moose::Role;
# ABSTRACT: Interface for deploy methods
@@ -145,7 +145,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/HandlesVersionStorage.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/HandlesVersionStorage.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/HandlesVersionStorage.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/HandlesVersionStorage.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::HandlesVersionStorage;
-$DBIx::Class::DeploymentHandler::HandlesVersionStorage::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::HandlesVersionStorage::VERSION = '0.002231';
use Moose::Role;
# ABSTRACT: Interface for version storage methods
@@ -79,7 +79,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/HandlesVersioning.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/HandlesVersioning.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/HandlesVersioning.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/HandlesVersioning.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::HandlesVersioning;
-$DBIx::Class::DeploymentHandler::HandlesVersioning::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::HandlesVersioning::VERSION = '0.002231';
use Moose::Role;
# ABSTRACT: Interface for version methods
@@ -145,7 +145,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/LogImporter.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/LogImporter.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/LogImporter.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/LogImporter.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::LogImporter;
-$DBIx::Class::DeploymentHandler::LogImporter::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::LogImporter::VERSION = '0.002231';
use warnings;
use strict;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/LogRouter.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/LogRouter.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/LogRouter.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/LogRouter.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::LogRouter;
-$DBIx::Class::DeploymentHandler::LogRouter::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::LogRouter::VERSION = '0.002231';
use Moo;
use DBIx::Class::DeploymentHandler::Logger;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Logger.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Logger.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Logger.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Logger.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::Logger;
-$DBIx::Class::DeploymentHandler::Logger::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::Logger::VERSION = '0.002231';
use warnings;
use strict;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Manual/CatalystIntro.pod new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Manual/CatalystIntro.pod
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Manual/CatalystIntro.pod 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Manual/CatalystIntro.pod 2019-05-10 15:28:52.000000000 +0200
@@ -249,7 +249,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Manual/Intro.pod new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Manual/Intro.pod
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Manual/Intro.pod 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Manual/Intro.pod 2019-05-10 15:28:52.000000000 +0200
@@ -204,7 +204,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Types.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Types.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/Types.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/Types.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::Types;
-$DBIx::Class::DeploymentHandler::Types::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::Types::VERSION = '0.002231';
use strict;
use warnings;
@@ -13,6 +13,13 @@
=> from 'Str'
=> via { [$_] };
+subtype 'DBIx::Class::DeploymentHandler::VersionNonObj'
+ => as 'Str';
+
+coerce 'DBIx::Class::DeploymentHandler::VersionNonObj'
+ => from 'Object'
+ => via { $_->numify };
+
no Moose::Util::TypeConstraints;
1;
@@ -32,7 +39,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionHandler/DatabaseToSchemaVersions.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionHandler/DatabaseToSchemaVersions.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionHandler/DatabaseToSchemaVersions.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionHandler/DatabaseToSchemaVersions.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::VersionHandler::DatabaseToSchemaVersions;
-$DBIx::Class::DeploymentHandler::VersionHandler::DatabaseToSchemaVersions::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionHandler::DatabaseToSchemaVersions::VERSION = '0.002231';
use Moose;
# ABSTRACT: Go straight from Database to Schema version
@@ -91,7 +91,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionHandler/ExplicitVersions.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionHandler/ExplicitVersions.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionHandler/ExplicitVersions.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionHandler/ExplicitVersions.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::VersionHandler::ExplicitVersions;
-$DBIx::Class::DeploymentHandler::VersionHandler::ExplicitVersions::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionHandler::ExplicitVersions::VERSION = '0.002231';
use Moose;
# ABSTRACT: Define your own list of versions to use for migrations
@@ -136,7 +136,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionHandler/Monotonic.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionHandler/Monotonic.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionHandler/Monotonic.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionHandler/Monotonic.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,6 +1,7 @@
package DBIx::Class::DeploymentHandler::VersionHandler::Monotonic;
-$DBIx::Class::DeploymentHandler::VersionHandler::Monotonic::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionHandler::Monotonic::VERSION = '0.002231';
use Moose;
+use DBIx::Class::DeploymentHandler::Types;
# ABSTRACT: Obvious version progressions
@@ -9,7 +10,8 @@
with 'DBIx::Class::DeploymentHandler::HandlesVersioning';
has schema_version => (
- isa => 'Int',
+ isa => 'DBIx::Class::DeploymentHandler::VersionNonObj',
+ coerce => 1,
is => 'ro',
required => 1,
);
@@ -21,12 +23,16 @@
);
has to_version => (
- isa => 'Int',
+ isa => 'DBIx::Class::DeploymentHandler::VersionNonObj',
+ coerce => 1,
is => 'ro',
lazy_build => 1,
);
-sub _build_to_version { $_[0]->schema_version }
+sub _build_to_version {
+ my $version = $_[0]->schema_version;
+ ref($version) ? $version->numify : $version;
+}
has _version => (
is => 'rw',
@@ -104,7 +110,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/Component.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/Component.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/Component.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/Component.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::Component;
-$DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::Component::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::Component::VERSION = '0.002231';
# ABSTRACT: (DEPRECATED) Attach this component to your schema to ensure you stay up to date
use strict;
@@ -61,7 +61,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/VersionResult.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/VersionResult.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/VersionResult.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/VersionResult.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VersionResult;
-$DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VersionResult::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VersionResult::VERSION = '0.002231';
# ABSTRACT: (DEPRECATED) The old way to store versions in the database
use strict;
@@ -51,7 +51,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/VersionResultSet.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/VersionResultSet.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/VersionResultSet.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/VersionResultSet.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VersionResultSet;
-$DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VersionResultSet::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VersionResultSet::VERSION = '0.002231';
# ABSTRACT: (DEPRECATED) Predefined searches to find what you want from the version storage
use strict;
@@ -84,7 +84,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::VersionStorage::Deprecated;
-$DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VERSION = '0.002231';
use Moose;
use DBIx::Class::DeploymentHandler::LogImporter ':log';
@@ -98,7 +98,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/Component.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/Component.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/Component.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/Component.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::VersionStorage::Standard::Component;
-$DBIx::Class::DeploymentHandler::VersionStorage::Standard::Component::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionStorage::Standard::Component::VERSION = '0.002231';
# ABSTRACT: Attach this component to your schema to ensure you stay up to date
use strict;
@@ -54,7 +54,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/VersionResult.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/VersionResult.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/VersionResult.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/VersionResult.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult;
-$DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult::VERSION = '0.002231';
# ABSTRACT: The typical way to store versions in the database
use strict;
@@ -65,7 +65,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/VersionResultSet.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/VersionResultSet.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/VersionResultSet.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard/VersionResultSet.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResultSet;
-$DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResultSet::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResultSet::VERSION = '0.002231';
# ABSTRACT: Predefined searches to find what you want from the version storage
use strict;
@@ -50,7 +50,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/VersionStorage/Standard.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::VersionStorage::Standard;
-$DBIx::Class::DeploymentHandler::VersionStorage::Standard::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VersionStorage::Standard::VERSION = '0.002231';
use Moose;
use DBIx::Class::DeploymentHandler::LogImporter ':log';
@@ -76,7 +76,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/WithApplicatorDumple.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/WithApplicatorDumple.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/WithApplicatorDumple.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/WithApplicatorDumple.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::WithApplicatorDumple;
-$DBIx::Class::DeploymentHandler::WithApplicatorDumple::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::WithApplicatorDumple::VERSION = '0.002231';
use MooseX::Role::Parameterized;
use Module::Runtime 'use_module';
use namespace::autoclean;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/WithReasonableDefaults.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/WithReasonableDefaults.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler/WithReasonableDefaults.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler/WithReasonableDefaults.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler::WithReasonableDefaults;
-$DBIx::Class::DeploymentHandler::WithReasonableDefaults::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::WithReasonableDefaults::VERSION = '0.002231';
use Moose::Role;
# ABSTRACT: Make default arguments to a few methods sensible
@@ -84,7 +84,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler.pm new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler.pm
--- old/DBIx-Class-DeploymentHandler-0.002222/lib/DBIx/Class/DeploymentHandler.pm 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/lib/DBIx/Class/DeploymentHandler.pm 2019-05-10 15:28:52.000000000 +0200
@@ -1,5 +1,5 @@
package DBIx::Class::DeploymentHandler;
-$DBIx::Class::DeploymentHandler::VERSION = '0.002222';
+$DBIx::Class::DeploymentHandler::VERSION = '0.002231';
# ABSTRACT: Extensible DBIx::Class deployment
use Moose;
@@ -211,7 +211,7 @@
=end text
-=for html <p><i>Figure 1</i><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvgAAAGyCAIAAAAeaycjAAA+XUlEQVR42u2deXwN997HhYgkIlKJlCBKY2lja7lFadXtJblP+7S01hcPWhS9HrW73WgvahdtKKXFFWupvVI89CKJWKoV221qTQiCJCI74fm++nvdueeePclJcpb3+4+8zsyZMzOZ+cz39z5zZuZX4REAAACAk1KBTQAAAACIDgAAAIDDis5DAAAAAKcA0QEAAABEBwAAAADRAQAAAEB0AAAAABAdAAAAAEQHAAAAANEBAAAARAcAAAAA0QEAAABAdAAAAAAQHQAAAABEBwAAAADRAQAAAEQH0QEAAABEBwAAAADRAQAAAEB0AAAAABAdAAAAAEQHAAAAEB1EBwAAABAdAAAAAEQHAAAAANEBAAAAQHQAAAAAEB0AAAAARAcAAAAQHQAAAABEBwAAAADRAQAAAEB0AAAAABAdAAAAAEQHHJmmTZtWgPJG9gJRBABEB8D2SCv7CMob2QuZmZlZWVm5ubn5+fkPHjwgmQCA6AAgOs4jOsnJyTdv3kxLSxPdEdchmQCA6AAgOs4jOmfOnLlw4cK1a9fEdXJyckgmACA6AIiO84hOXFzcyZMnxXVu3Lhx7949kgkAiA4AouM8ohMdHS2uc/r06aSkpIyMDJIJAIgOAKLjPKKzYcOGPXv2HDt27Pz583fu3CGZAIDoACA6ziM669at++GHH44ePfrbb78hOgCA6AAgOogOAACiA4DoIDoAAIgOIDqA6AAAIDqA6ACiAwCIDqIDiA4gOgCA6AAgOogOogMAiA4AooPoAAAgOgCIDqIDAIDoACA6iA4AAKIDiA4gOgAAiA4gOoDoAACiA4DoAKIDAIgOAKKD6AAAIDoAiA6iAwCA6ADYueiEhobKWg0cOBDRAQBAdADKWnTCwsIq/E7FihWrVq365JNP9u3b9+DBgy4rOsOGDZMVbtKkCaIDAIgOgJOIjr+/v7yWJvnrr78W3XFzc/v0008RHUQHABAdAOcRHcUXX3yhzvHs3btXjSksLIyIiBBlqVKlSu3atV977bWEhAQ9lenWrdvgwYODg4PFk/r06ZOenm5UdB48eDBr1qynnnrKw8OjWrVqL7/88oEDB9RbAwYMkClbtWqlzblz584y5r//+7/ltZiHvH7zzTeHDh0aGBhYvXr1t956Kz4+XqaRtQoKCpo2bZr2QWtWuHv37iNGjKhfv76sRnh4eHJysrzVsmXLCv/JihUrEB0AQHQAnEd0cnNzK1asqKxCjRG3kME//elPqampe/bsqVSpkqen5/Hjx3W9QVi7du3NmzfbtWunNMKo6MgLGXz22WevXbsWHR3t7u4uc/u///s/eSs2NlbN5+eff5bBW7duyVtqtproyPT79++XCdSU3t7ex44d2717txrct2+f9Svs5ua2cePGlJSUJ554QgZ79+7NGR0AQHQQHXB+0RHq1q0rIxs3biyvpakWJ5BB7cKd559/XtcMlDe0bNlSDW7atElpR2Jiop7o/Prrr+ot8QDdpcsM1WCzZs1kcNSoUfL666+/ViqTlZWliU6nTp3UlNWrV9d0Sv5xpUSzZ8+2foXbt2+veyZJ/bOIDgAgOoiOOaZMmaJ72l8Gebcs37WV6AQFBWmN/dq1aysYo3Xr1rre0LNnTzV48uRJNcHmzZv1RGfNmjXqrZ9++klNPHLkSBn08PDQ/dUsICAgPz//v/7rv+R1nz591FtKdPr3768GH3/8cRl877331KC7u7sMTp061foV7tevnxp85513ZLB+/fo2FB1dJk2aRFZL6V1KLgCiA5zRKbLoZGdnqzMib7zxhq6dnD592szlxpro/PLLL8UWnfT0dC8vLxmzfPlyGSkvtm3bpis62k9gSnTGjRunBtUZHSU6Vq6wNitlNrYVHc7olE3a2QgAiA4gOkUWnblz5ypR2LNnjwwmJiaqwaVLl5rxBu0iYu2nq19//dXUT1fr1683+tOVdhGP+mXqsccey8/PL6roWLnCpkRnxIgRiA6iA4DogD6cRnYC0UlLS/vqq6+8vLz0bi9/++23ZZrg4OCffvopMzPzyJEj//u//7t48WK9i5FFX7SLkbt162bmYuQ2bdqkpKTs3r27cuXK2sXIiri4OO2niiFDhmjjrRcdK1fYlOjMmDFDBqtVqyb/C6KD6AAgOkDRcQbRUXcheXt7qwcGHjp0SHeaBw8ezJ8/v3nz5lWqVKlRo8bzzz+/aNEidY2w7u3lgwYNCgoKkpn06tVLnMnK28v/8Y9/6K2SLEjvLqqiio41K2xKdG7fvv3nP//Z19dXrcO5c+cQHWoOAKIDFB1HFR07fCTgxx9/LDOsXbt2YWEhXUCAKTiLDIDoIDqIjuOJTnp6eps2bWSG06dPp68rAABEB9EB5xEd9SuSv7//6NGj79+/j+gAACA69gKnkZ1VdNTlw8KxY8e0kf369VMjT506VRqucO7cOTV/7bKbl19+WfdKGkQHAADRAUQH0UF0AAAQHUB0EB1Ex9HgLDIAogOITtmJjjZGdVDVsmXL2bNna8eP0pTg4OCFCxe2atVKJhBlmTVrljbD/Pz8sWPH1qxZ08/Pr1OnTjKZRdFZu3Zthw4dqlWr5uPjI4ubO3duXl6e3sRXrlyR1x4eHlFRUYiO86WdjQCA6ACiU9ZndERZDh48qJ5DM2/ePF3zEEaMGJGWlqZuIBf27t2rJhg1apQMiuXEx8cnJSW1aNHCvOh8+OGHMhgUFPTLL7/cvHlTjEcGO3furO5IVxPXrVt35syZN27c4IwOogMAiE5J4TSy04uOUUz9dKWeQ6j1o6nMw93dPTMzUwbPnj2rPj5jxgwZFFNRvXK+++67avrVq1ebEZ2rV6+qJwSqjwvfffedmn7Xrl3axDJNRkYGP10hOgCA6FB0EJ2SntE5ePBgly5d/P39K1asqGlQjRo1dDWlTp06avDixYtaf9QyuH//fjX4+eefqwmOHz9uRnS2bNliSrwiIiK0iYOCgrhGh5oDAIgORQfRKanoJCcne3t7qz7MVecPXbt2VX1zGv3h6dKlS+ZFR5ZlRnQ2b96s3l22bJnRdS7fK5cRnbKBs8gAiA6ig+iUkehs27ZNDYqCyGBhYWG9evWsF51i/3Rl6imFiA4AAKKD6CA6NhOdCxcuVK5cWQYHDx589+7dTz/9VL1rpegII0eOVBcjHzlyJDk52eLFyB988IEMykLXrFmTlZUlKyBu1LFjR3VRDqIDAIDo2BhOI7uy6KjrZkJDQz08PGrXrj1mzBilGtaLTl5e3ujRo/39/X19fTt06BAZGWnN7eUvvviiTO/p6dmkSZO33norNjaWMzoAAIgOIDqA6AAAIDqA6ACiY69wFhkA0QFEBxAdZ047GwEA0QFEBxAdRAcAEJ0Sw2lkRAcQHUQHANGh6ACig+gANQcA0aHoAKKD6IBpOIsMgOggOogOIDoAAIgOooPoAKIDAIgOomMGTiMjOoDoAACiA4DoIDoAAIgOAKKD6IBpOIsMgOgAogOIjjOnnY0AgOgAogOIDqIDAIhOieE0MqIDiA6iA4DoUHQA0UF0gJoDgOhQdADRQXTANJxFBkB0EB1EBxAdAABEB9FBdADRAQBEB9ExA6eRER1AdAAA0QFAdBAdAABEBwDRQXTANJxFBkB0ANEBRMeZ085GAEB0wLWoVatWBShvfH19ER1EBwDRcTY4jWwnZGRkXLlyJSEh4dChQzt37lxj90hztcbpkC0v21/2guwL2SPEEtEBQHQoOmAbMjMzU1JSEhMTT5w4cfDgwV12jyRnl9MhW162v+wF2ReyR4glNQcA0aHogG3Izs6+fft2cnKytLInT56Mt3skOfFOh2x52f6yF2RfyB4hlqUBZ5EBEB1ExxXJy8vLzMyU9jUlJeXy5cu/2j2SnF+dDtnysv1lL8i+kD1CLAEA0UF0wDbcv39fWtbs7Oy7d++mpaXdsnsmTpx4y+mQLS/bX/aC7AvZI8QSABAdh4fTyHZF4b94AOWBtv2JIgAgOgAAAACIDgAA/AvOIgMgOgAATgvXBQIgOgB8LwdEBwAQHZoroLkCkgOA6CA6FB0gOUByABAdig4AyYHShbPIAIgOzRWQHAAAQHRoroDv5QAAiA6iQ3MFAACA6AAAAAAgOgAAUCw4iwyA6AAAOC1cFwiA6ADwvRwQHQBAdGiugOYKSA4AooPoUHSA5ADJAUB0KDoAJAdKF84iAyA6NFdAcgAAANGhuQK+lwMAIDqIDs0VAAAAogMAAACA6AAAQLHgLDIAogMA4LRwXSAAogPA93JAdAAA0aG5AporIDkAiA6iQ9EBkgMkBwDRoegAkBwoXTiLDIDo0FwByQEAAESH5gr4Xg4AgOggOjRXAAAAiA4AAAAAogMAAMWCs8gAiA4AgNPCdYEAiA4A38sB0QEARIfmCmiugOQAIDqIDkUHSA6QHABEh6IDQHKgdOEsMgCiQ3MFJAcAABAdmivgezkAAKKD6NBcAQAAIDoAAAAAiA4AABQLziIDIDqlS926dSuYoF27dmwfIDlAcgAQHQdm9OjRpopOREQE2wdMMX78eFPJiYyMZPsAyQFAdOyCEydOGK047u7uqampbB8gOUByABAdx6Zp06aGRSc8PJwtA+Zp1qyZYXJeffVVtgyQHABEx46YOnWqYdGJiopiywDJAZIDgOg4PBcvXtSrOD4+PpmZmWwZME9SUpJhcnJyctgyQHIAEB37omPHjrpFp3///mwTIDlAcgAQHSdh8eLFukUnOjqabQLWsGzZMt3k7N27l20CJAcA0bE7UlNT3d3dVcUJCAgoKChgm4CVyfH09FTJqVWrFskBkgOA6Ngp3bp1U0Vn9OjRbA0gOUByABAdp2LdunWq6MTFxbE1wHo2btyoknP06FG2BpAcAETHTsnJyfHx8QkJCWFTAMkBkgOA6DghgwYNooM9KAZDhgyZOnUq2wFIDgCiY9fs3bs3MTGR7QAkB0gOAKIDAAAAgOgAAAAAIDoAAAAAiA4AAAAAogMAAACIDgAAAACiAwAAAIDoFIuXXnpJtzvf/fv3u+y7ERERTZs2HT58+MWLF8muURISEvr37x8eHq47UjaX7iZ94oknXPldF6dbt25+fn7UkzJ4V7Yz9QoQHSgaaWlp0pB/9NFHUkHoB8eQLVu2yJaZM2cOD1sDU6SmpspxxHagXgGiU57HRqtWrQoKCtg3Zli3bp18YWI76CUnICDg4MGDbAoz5OTk9OnTh+MLqFeA6JQbM2bMGD58ODvGIrRVeiQlJUVFRbEdLBIeHi4Nj6vpHfudegWIjr2Ijoh/dHQ0OwaglFi8ePGgQYNc6l+WqqJ3BQkAIDrlhp+fH7+gA5QeJ06caNWqlUv9y1QVAETHjkSnQoUK7BWA0uPixYuudh8WVQUA0eGuK4eEs/FQDAoKCpKSkhAdoF4BogOUb0fC1a47AY4U9kJRKSwsbNOmjazJl19+qca8/PLLMli/fn0r5zBlyhT13KCSPxxo+vTpDRo0qFy5ssytd+/e9rzvirqVTDFmzBiZT58+fRAdoHyzNQA4Qm1PVFSUrEbt2rVzc3PLV3T27dun5qMplyuITkpKioeHh8zq8OHDiA7QtLM1ADhCbUzLli1lNSZOnFjsOdhKdJYsWaLmExcX5zqi8/D3R5PLrHr16oXoAE07WwOAI9SWHD9+XLlFfHy8qSZcDQYHB0dGRrZq1crb21vemjlzpnq3devWFf6T0NBQ9daaNWs6dOhQrVo1Hx8f0ak5c+YYnjS6fPmyvPbw8GjevLnefGbPni1T9uvXTxsji5b5zJo1q7CwUFvbjRs3du7c2c/Pr2rVqp06ddJ9PqqZFTBlLdr6rFq1SsYvX768Xbt2MmcZ06hRo0mTJt29e9eU6JhZ3OHDh8PCwgIDA728vOQ/nTBhgu5FgeqkWuXKlcvyRkjuunJgeNgoySke9H4FLlivRBqkSnh6eubn55sXHWHEiBF37tz5+OOP1eCePXvMnNH58MMPZUxQUNDPP/9848YNMQAZFCN58OCBNs+6devOmDHj+vXr6iNffvmlmTM6eXl5Bw4c8PX1lQnmzp2ru+hKlSotWbIkPT1dljVy5EhrVsCo6Oitj+iIjKxevXpMTMy1a9fat28vg88884zSF72tZGZx2dnZqi+5DRs2yGfPnj0rm33UqFHa0i9cuKD+8S1btiA6AEVjxYoVbASOMgBTDBo0SJLfqFEjo6c3dAfd3d3VyYwzZ86oVvmzzz4zJTrJyckiH7rTbNq0SU3z/fffa/OUacROtOWaFx1FWFiYTNC6dWt5ffXqVVkro1fyWlwBo6Kjuz5JSUlqDpo57dq1S81h6dKlelvJ/OISEhLUa/GbK1euGC5dZKhixYoywfTp0xEdAOAo4/8Fm6GuDlHeYF506tSpo3f6QfzGlOhs3ry5ggnmz5+vzTMoKEh3uUZF58CBA126dPH391cqoKhRo4buUiIiIvT+L4srYFR0dNdHm0NkZKQac+nSJTVm8ODBelvJ/OKysrJk/bUx1apVCw8PP3TokO4KqDNVEyZMQHQAgKOM/xfK4YyONig2Y1F0vvvuO92TH6bEQu9KXkPRSUpK8vb2ljE9e/a8c+eOjOnatav6OUlXLxYsWKA3f4srYHF9tDksXLhQ7x83FB2Lizt27Fj37t1r1qyp6Y78C5mZmXpndKZNm4boAABHGf8v2IyZM2daeY2OGdH55JNPTP10NXDgwJKIztatW9UYMQklBPXq1dNE5+rVq2opffv21Zu/xRWwuD6GP11FR0db/OnK4uJu3bo1fvx4NZ9Tp07pnSTbtGmT64oOWA9PGoXiUfJnnSE64HD16tixY1bedWVGdFauXGnYTn/wwQfqTqLVq1ffu3fv/PnzUVFRHTt2VBfBWCk68in18MDBgwdnZGRoRqVER1BXRotkiHzIBCdPnhw6dKg1K2CNeKmLkf38/GJjY1NSUtT1xaYuRjazuOvXr4eFhe3YsUPMLDs7+/3335cpAwMD8/Ly1GfVXVfyX4gGITpA+S4aPBkZOFLYC+Zp0aKF3tUhRRUdabAHDBgQEBDg5uYm44cNG6bGr1mz5sUXX/T19fX09GzSpMlbb70VExNTpDM6D3//fSo0NNTDw6N27dpjxoxRH9RER1i/fv1LL70kS/H29ja8vdzUClgjOg9/v728bdu26vbykJAQi7eXm1qcGG3v3r2feOIJ9Y/07NlTO53z8F9XSr3xxhtlud8RHQoHWwMAXOIIXbVqld6TkaEs0Z6MHBsbi+gATTtbA4Aj1MZofV0tWrSIPVL2jB07tlw69kJ0KBxsDQDgCAWnxRnuuho4cKD6sfPo0aPaSO1Z2gkJCaWxnmfPnlXz/9vf/qbG2LA3ECvhycglSY7LxuYhT0YuMa4cHuoVIDqITn1SVS4U9cnIrhwbvlsjOgCIDqJD0aGtQnScBJv/v9QcAETHHkXHfMew5jutffj7XYVjx46tWbOmn59fp06dZDKLRafY/buC/YiOU8YG0SE81BxAdJz5jI7RjmEtdlo7atQo9TwlqRdXrlxRz2MwU3RK0r8r2OEZHWeKDaJDeKg5gOg4ZItlFFOnkXU7hn1oqdNaqRqq59h3331XTa8e72iq6JSwf1cr4cnIxKZ48GRkwlP2UK8A0Sn1b1dmOoZ9aKnT2n379ul1qKY9Tdxo0Sl5/658Ly8qRX0yssvGxgUprzM6hId6BYhO2RUd8x3DPrT05G/DoiPLMlN0Sti/K4WjDMqoy8YGqDnlEh7qFSA6pVt0zHcMa7HoFPs0cvH6d6Vw2InoOGVsgJpTLuGhXgGiU7pFx2LHsBb7chs5cqS6MDA+Pl6+q1m8MLAk/btSOOxEdJwyNkDNKZfwUK8A0Sn+wWDl7+XmO4a1WHRyc3NHjx7t7+/v6+vboUOHL774wppbPYvXv6uV8KTR0hYdp4zNQ56MXCai46zhKTbUK0B0sH4oEUV9MjJSCACA6FCCARAd/l8AQHQoSQA0/Py/AIDolFJJ+uMf/ygfrFSpUkpKiu74adOmqV+1165da/NVpaMZh0a7zMLNza1KlSq1atV64YUXZs+enZGR4fQJQXRcqrZQqQDRcfi7rh7+fn2GKjrz5s3THf/000/LSF9f3+zsbOcTHZ40ahPROXr0aG5u7qFDh/7whz/IYIMGDc6dO+fcDQxPRnap2mInOaReAaJTIjIzM6tWrar7eHXhxIkTqkINHjyY8u30lPzJyBkZGXXq1JExTZo0yc/P55s0R4rL1hbqFSA69kj//v1V6Tl79qwaoz0U6x//+Ic2mZnefbVm6fLly/Law8Nj1apVZrr8NWzGli9f3q5dOymL8tlGjRpNmjRJ9WLz0IqeiikcZVxGjd4hPHnyZDVy3bp1VgZG9un8+fNbtGghCQkJCVm5cqUZ0TGVkHfeeUemlPHaD2fff/+9WpMtW7awc6ktJaktenOzOL1YvvyDZnpNp14BolM+7N69Wx2NH3300cPfn0Nat25d9UtEYWGhmsZM777a8S+fmjFjxvXr12WM+S5/9cqH1Cn1kIyYmJhr1661b99eBp955hlV7Cz2VEzhsAfR0Z5m+5e//MXKwKiv9bJPv/rqKzW4c+fOoibk1KlT6rNffPGFmnjAgAEyGBAQYJNzS+DKtcWo6JiZfsyYMepXudjYWDGzZs2aITqA6NgFutXnoU5PMfIdXU1gvndf7fiXadLT09UE5rv81S0f8lVMzXzkyJHq3V27dul2PWO+p2IKh52Izv79+9XIvn37WhkYNze3mzdvqgmaNm0qY9q0aVOMhKiLXqVRkdc5OTnSzMig1vIBtaXYtcWo6JiaXsKsHug8bNgwNf2qVasQHUB0yrO50mXSpEnqgJTvPfIlW71OTExU75rv3Vc7/uU7mTZD813+Gu06ODIyUr176dIl3V/xzfdUXDx40mipntGxMjABAQHax7t16yZjqlSpcv/+/aImZMuWLWrw4MGDWjN5/Pjx0thWPBnZpWqLUdExNb3m+hEREWoCw17TqVeA6JSb6Jw+fVodkG+//bY6Lfz8889r71rs3dfopaNmuvw12nXwwoUL1Qe1B7rrFiMzj3uHElLUJyMbFR3tNP7atWutDIxkQxvz+uuvmxIdiwl58OBBgwYNZLBfv349evSQF82bN7fDo8w1cejaYlR0StJrOgCiU54luHXr1urXBHVkLl68WHvLYu++5u+RMezy1/zp5ejoaMPTy4iO/WDmrqvGjRvn5+dbGRjDn66023OKlBBhzpw5ypO8vLzkhQwiOvbz/zpubSmS6EiYVa/p6jK1h7b76QoA0bFNSZJvIdrXI2kw0tLSdN8107uv0WJkvstfoxcMyre92NjYlJQUdTWi3gWDiI59io7s0JiYmOeee04GGzZsqD1Hx5rACEOHDr1z5460Ompw+/btRlsU8wkRJK7qTmajT6hDdMr3/3Xc2lIk0Xn4r4uRH3vssSNHjly5cqV58+aIDiA6dlSSUlNT1ZV0Qo8ePQwnMNO7r9FvXWa6/DV6C2jbtm3VLaAhISGGt4AiOnYoOoLsL/Vk5Llz52q7zMrABAcHy6dCQ0NlApGkb775xsz3eDMJUQwfPlyt0iuvvGLnDb+riY7j1paiio66vTwgIED1mi7xVhPMmDGDugGIDpQpPGm0fCmN5wFqV0hs2LCh9NacJyOD9axbt84mj3SiXgGiA5TvElHUJyPboejk5uaqO3oaN26s/Z4FHCllzPbt2ydOnHj27NmsrKyYmJiQkBDZgB06dFCX2LMXANEByrerbA3bis6UKVPUw5G7dOny22+/sUOhvBDJjoiIaNmypaenp4+PT+vWradPn17yLr2oV4DolJQffvihc+fOgYGBlSpVktaiXr16uvd/qlZEcKaT9hQOtgYARyiAS4jO+vXr1RNN4uPjc3JyEhMTVdcwiA5lFAA4QgHRcfi7rtq2bSsf7N69u6kJnFJ0eNIoZbR48GRkoF4BouNgzVVQUJDqhW7t2rVZWVl676onfekSGhqq3rLYJ7Beh8P9+vXTZuLt7d2yZctZs2ZpHftZ0+uvmS6OoSQU9cnISCEAAKLjMCVYPUFLeybKCy+8MG3atNTUVG0Co2d0rOkTWLfDYV3y8vIOHDigel6cO3euGmmx11/zXRwDIDr8vwCA6Bhh+/bt6inpugQGBiYnJ5sSHSv7BNbtcNiQsLAw7ZH/Fnv9tdjFMQANP/8vACA6xjl8+HCvXr20J+grxo8fb0p0rOwTWLfDYeHAgQNdunTx9/evWLGitpQaNWo8tKLXX4tdHAPQ8PP/AoCTi04Jyc3N/eGHH8LDw5VAvPnmm6ZEp6h9Aj/8/SSQt7e3jOzZs+edO3dkTNeuXdWPXw+t6PXXYhfHRYUnjULx4MnIUPZQrwDRsSW3b99WSvHee++pMZ988onFn67M9wksbN26VU0gyiKDDx48qFevniY6Fnv9tdjFMeW7JJT9k5EB0QH2AiA6ZcSrr746efLk+Pj4W7duZWZmzpo1Sw4qLy8vrZO8lStXKufYtGmT9qki9QksnD9/Xl2FM3jw4IyMDE2elOg8tKLXX/NdHFM4KKMAHKEAiI4RxDCeffbZmjVritxUqlRJXrz22mtiG9oEeXl5AwYMCAgIcHNz071e2Po+gRWbN28ODQ1VvQ3LQtU0muhY0+uvmS6OKRyUUQCOUABEx2GwVa+/FA62BgBHKICTiI5DHwyl1OuvKXjSKGW0ePBkZCh7qFeA6DhDc1VKvf6CNfBkZCvJzMyUcLIdAADRQXQAnJCLFy+62hkdqgoAooPoALgKCQkJzZo1c6l/2cfHJzMzk10PgOggOgDOz4oVK/r06eNS/3K7du14Wh0AosNdV44HtRuKQU5OTkpKikv9yx999JHWGwyUCzt27OCkGiA6UGQ4+2X4xf3s2bNsB9BDxO5Pf/oT26Ecv5LVrVtXDJtNAYgOIDolYtmyZbVq1dq4cSMlFcAeyMzMlKPSz89vx44dbA1AdADRsQHR0dEdO3ZUnY7p9X61YsUK3R7jdd/t1q2bmXfNf9ZR5ty/f3/ioXvs6MK7pfSuKE54eHhcXByRA0QHEB3n3JKOOGewh+3sassFcCHR4TCzHp40iugAwkGuABAdAEQHEA5yBYgOogM0ZswZEB0ARIfDDGjMEB2ywXIBEB0OM0B0EB2ywXIBEB0oOjk5Ody0iegAwkGuABAd58QF+6BGdGiQEA5EBwDRcRVcsA9qRIcGCeFAdAAQHVfBBfugRnRokBAORAfAGUQnMTGRHWORHj16LFu2jO2A6ADCQa4AHEl0UlJSAgIC6IPaPAUFBSNHjqTrSkQHEA5yBeBgoiMsXryYPqgB0aFBQnQQHQDnFB1h7969qg/qgoICvYOQnoEBHaFBQjjIFYBjiw7NFZAckoPoIDoAiA7NFZAcQDjIFQCiQ3MFJAcQDnIFiA6iQ3NFY0ZyANEBQHRorigrNGYkh2ywXABEh+aKskJySA7ZYLkAiA7NFZAckoPoIDoAiA7NFbB/SQ7CQa4AEB2aKyA5gHCQK0B0EB2aKxoz5gwIB7kCRIfmirJCY0ZyyAbLBUB0aK4oKySH5JANlguA6NCoUFZIDslBdFguAKJDcwUkh+QgHIgOAKLDnIHkAMJBrgAQHZorIDmAcJArQHQoSTRXNGYkh2ywXABEh+aKskJySA7ZYLkAiA7NFWWF5JAcssFyARAdmisgOSQH0UF0ABAdmisgOYBwkCsARIfmCkgOIBzkChAdShLNFY0ZyQFEBwDRobmirNCYkRyywXIBEB2aK8oKySE5ZIPlAiA6NFdAckgOooPoACA6NFdAcgDhIFcAiA7NFZAcQDjIFSA6iA7NFY0ZcwZEh1wBokNzRVmhMSM5ZIPlAiA6NFeUFZJDcsgGywVAdGiugOSQHEQH0QFAdGiugP1LchAORAcA0WHOQHIA4SBXAA4vOnXr1q1ggnbt2rnanIHkgD1ng+UCIDpFZvz48aYO0YiIiJLMefTo0WU/58jISBJZ7skp4V5wxDmDPWxnO1xuCWsdAKJjA06cOGH0+HR3d09NTXW1OQPJAXvOBssFQHSKQ7NmzQwP0fDw8JLPuWnTpmU551dffZU4lntybLIXHHHOYA/b2a6Wa5NaB4Do2ICpU6caHqJRUVGuOWcgOeC429nVlguA6FhFUlKS3vHp4+OTmZlZ8jlfvHixLOeck5NDHMs9OTbZC444Z7CH7WxXy7VJrQNAdGxDx44ddQ/R/v37u/KcgeSA425nV1suAKJjFcuWLdM9RKOjo20158WLF5fNnPfu3UsWyz05NtwLjjhnsIftXF7LLb1aB4Do2IDU1FRPT091fAYEBBQUFNhwzu7u7qU951q1atlwzlC85Nh2LzjinMEetnM5LreUah0AomMbunXrpg7R0aNHM2cgOeC429nVlguA6FjFxo0b1SEaFxdn2zmvW7eutOd89OhRgljuybH5XnDEOYM9bOfyWm7p1ToARMcG5OTk+Pj4hISEMGcgOeDQ29nVlguA6FjLkCFDpkyZUhpzHjRoUOnNeerUqaSw3JNTSnvBEecM9rCdy2u5pVfrABAdG7B3797ExETmDCQHHH07u9pyARAdAAAAAEQHAAAAANEBAAAARAcAAAAA0QEAAABAdAAAAAAQHQAAAAAHFJ2mTZtWAFsgW5IEkyuyQTZIHYB9iY4cD4/AFsiWzMzMzMrKys3Nzc/Pf/DggStHmVyRDbJB6gAQHWcrK8nJyTdv3kxLS5PiIpWFxgzIBtkgdQCIjvOUlTNnzly4cOHatWtSWXJycmjMgGyQDVIHgOg4T1mJi4s7efKkVJYbN27cu3ePxgzIBtkgdQCIjvOUlejoaKksp0+fTkpKysjIoDEDskE2SB0AouM8ZWXDhg179uw5duzY+fPn79y5Q2MGZINskDoARMd5ysq6det++OGHo0eP/vbbbzRmRIJskA1SB4DoUFZozMgG2QBHTV1hYWGbNm1kWV9++aUa8/LLL8tg/fr1Syk/pT3/kjBlyhT1EKOLFy+W5CNl9j+OGTNGFtSnTx9EB2jMyBXZIBukzghRUVGyoNq1a+fm5iI6Dic6KSkpHh4esqzDhw8jOkBjRq7IBtkgdfq0bNlSFjRx4sQyy48riE5Z0q1bN1l6r169EB2gMSNXZINskLr/4Pjx46qRjo+PNyUinTp1ksHg4ODIyMimTZtWqVIlNDT022+/XbJkSUhIiIeHx5NPPrl48WK9j8v08+fPb9GihZeXl0y2cuVKM6KzZs2aDh06VKtWzcfHR8Rrzpw52umloi7d/Ny0dZO5tWrVytvbW1Zj5syZ6t3WrVvr9cIhy5Lx/fr108bIR2Ses2bNKiwsNPMRw/9x+fLl7dq1q1q1qqxzo0aNJk2adPfuXWvWSjh8+HBYWFhgYKBszObNm0+YMCEpKUnvnFzlypXT0tIQHaAxI1dkg2yQun8jDbYsxdPTU/exy0ZFR/j444/T09P/+Mc/qkEZf+vWrU8//VReu7m5yUrqflwYPHiwrPNXX32lBnfu3Gl0/h9++KEMBgUF/fzzzzdu3BBHkcHOnTurLi+KunTzc9PWbcSIEbJuMk81uGfPHmtOz+Tl5R04cMDX11cmmDt3rvU/XYmayGD16tVjYmKuXbvWvn17GXzmmWeUgZlfq+zsbD8/P3ULnkx/9uxZ2WujRo3SlnXhwgU1/ZYtWxAdoDEjV2SDbJC6fzNo0CBZSqNGjcz8tKRUw8PDQ1pc3XZ927ZtMnjs2DE1qHcts8jHzZs31RjVC2ybNm0M55+cnFypUiUZ/Oyzz9S7mzZtUjP8/vvvi7p0i3NTi3Z3d1dnU86cOaPe1aa35neosLAwmaB169ZWik5SUpJaq5EjR6p3d+3apT6ydOlSi2uVkJCgBsVvrly5Yrg+4nAVK1aUCaZPn47oAI0ZuSIbZIPU6V/eobXZZkSnTp06alBaX9XuSgMsgz///LManD9/vu7HAwIC9JZSpUqV+/fv681/8+bNpjpvVzMs0tItzk0tWpubdi5EZMWMtRw4cKBLly7+/v7KJxQ1atSwUnS0tYqMjFTvXrp0STvpZXGtsrKyZNHacqtVqxYeHn7o0CHdXaZOMk2YMAHRARozckU2yAapK84ZHW1QU42zZ8/K4IkTJ4yKTs2aNbUZvv7666ZE57vvvtM9t2FIkZZucW56/5qoiUXRSUpK8vb2ljE9e/ZUu6Br167qdygrRUdbq4ULF+otV1d0zKzVsWPHunfvLptU0x1ZemZmpt4ZnWnTpiE6QGNGrsgG2SB1/2bmzJlWXqNTVNEx/OlKO29k9KergQMHllx0LM7NolJ88sknetaydetWNUZ8RVlFvXr1dEXH8CMWf7qKjo42/OnKzFpp3Lp1a/z48erdU6dO6Z0B2rRpE6IDNGbkimyQDVL3b7RrXCzedVVU0RGGDh0q6yxtuRrcvn270fl/8MEH6qah1atX37t37/z581FRUR07dkxPTy/G0s3PzaJSrFy5Uk8aZA4yN3X2JSMjQ9MaTXQMP/LQxMXIfn5+sbGxKSkp6hJpvYuRTa3V9evXw8LCduzYcfXq1ezs7Pfff1/eCgwMzMvLU9Oru67EpUSDEB2gMSNXZINskLr/oEWLFnqXd9hEdIKDg+fOnRsaGurp6dmwYcNvvvnG1Pwf/n5D+Isvvujr6ysTN2nS5K233oqJiSne0s3PzaLoiD0MGDAgICDAzc1Nxg8bNkxdZCP/iIeHR+3atceMGaNmoomO0Y8Yvb28bdu26vbykJAQw9vLzazV/v37e/fu/cQTT6h16Nmzp3Y6R7sE6o033iizCoDoUFZozMgG2QCHSd2qVav0noxcQuz5eYDOh/Zk5NjYWEQHaMzIFdkgG6ROH62vq0WLFiE6DsfYsWNla/fu3bssF4roUFZozMgG2QDXTR2i4/TYu+iox0pWqlTp+vXruuOnT5+ufhSU48rmh6uWe8qKEzdmAwcOVBFyc3OrUqVKrVq1XnjhhTlz5ty9e9cJgkQ2Slt0KE2kDhAd2xQd7frw+fPn645/+umnZaSvr29OTg6iQ1kpiegcO3YsLy8vJibmD3/4gww2aNDgn//8J6KD6FCaSB0gOmVRdO7du1e1alX1SANtpPZwycGDB3OimLJSctFRY+7evVunTh0Z06RJk4KCAkQH0aE0kTpAdMqi6PTv31/VjnPnzqkx2gOIDhw4oE22du1a3Q5g586dK1/T9dqbK1euyGsPD4+oqKj4+Hi97lWTk5NNtU8rVqzQ68c1MzNTd+Lg4OCFCxdq/bjOmjWLsuJwoiNMnjxZjVy/fr2VuZJdHxERoXV6/Pe//92M6JgK0jvvvCNTynjthzOtc5mtW7eSDTsUHUoTqQNEx2ZFZ8+ePap2fPTRRzJYWFhYt25d9ROD9g9oHcD+8ssvN2/e1DqAlYm1A14+NXPmzBs3bsiYnJwc1b3qt99+K0VH6tTs2bNHjRpltJpo/biqRydp/biqaqXbj2taWprWj+vevXsRHYcTnW3btqmRf/nLX6zMlfr6Lrtee87Y999/X9QgnT59WutcRk08YMAA1f9O8c4tkY0yEB1KE6kDRMc2RUe3fMjg/v371eEqX77VBFevXlXPq54xY4Yao3XVIV+LtQNepsnIyFATnDp1Sk0gRSQpKcnMLw7aI7pHjhyp3tUehr1s2TJtYnd3d/VF6uzZs+pdbWUQHQcSnR9//FGN7Nu3r5W5cnNzS01NVRNonR4XI0jq4tZmzZrJ69zcXNXpndbCkQ07FB1KE6kDRMdmRWfSpEnqEJUvLvLtWb2WA0m9u2XLFlMdwEZERGgHvHyp0maYnZ1t2L1qTEyMYTXRZr5w4UL17uXLl3V/htf6cVXv6j4jEtFx6DM6VuYqICBA+7jW6fGDBw+KGiSth5pDhw5pzeFPP/1ENuxWdChNpA4QHZsVnTNnzqhD9O2331bndZ9//nntXa1PefU9xsprQo8fP27Yveq9e/f0ptdmvmjRIvVB3Q7rDWeuvYvoOKLoaKf3ZcNamSuJkDZG6/TYUHQsBqmwsLBBgwYy2K9fvx49esiL5s2bkw07Fx1KE6kDRMdmRad169bqZwJ1rC5ZskR7Szs/LE1XMW5+uX37tnYJ4enTpy2eH5bD2PD8MKLjBKKj3XXVuHHjgoICK3Nl+NOVdhtOkYIkzJ07V3mSl5eXvJBBsmHnokNpInWA6Nis6Hz++efa9xtpCdLT03Xf1TqAXbNmTVZW1oULF1avXt2xY0f1y7dhNblx40ZYWNjOnTuvXbuWk5Ojda+an59v6oo/+boWFxd3/fp1rR9X3Sv+EB2HFh3Z77Gxsc8995wMNmzYUHuOjjW5Up0ep6WlSeuiBnfs2GHm0lFTQRIk1eqOZaNPoiMb9ik6lCZSB4iObYrOrVu3VNfzQo8ePQwnWLt2rV4HsNJ0mfna9OOPP+p1r6q+M5m6h1OvH1e9ezgRHccVHUF2q3oy8rx587Q9a2WugoOD5VNap8fLly83f3u5qSAphg8frlbplVdeIRsOITqUJlIHiE6ZFh2XgrJSvrkqjecBanfufPvtt2SDmkNFAkB0KCuUFecRnby8PHXnTuPGjbXfs8gGNYeKBIDoUFYoKw4vOlOmTFEPR+7Spcv58+fJBjWHigTgQqKze/fuzp07BwYGVqpUSVqCevXq6d7DqVoI4dKlS5QVGjMgG2WQDaOPJ+jXr58aeerUqdLYrefOnVPznzp1aun9fkrqANEp66KzYcMG9bSSI0eO5ObmyvGjundBdCgr9iY6jz/+uKxGVFRUsedw69YtFebDhw+TDUQH0QFwCdFp27atfKR79+7mz/kjOjRmRdp6LVu2VLH561//qo0cNmyYGinth8U5vPLKK1qvWIgOooPokDpAdIpZdIKCguQjvr6+cghlZ2frvaue1qVLaGioestiv756nQZrRUrw9vaWhnD27NnaNiooKBg/fnzNmjX9/Pw6deq0cOFCvYrzyGw3xZQVuxWd6tWrqz7Db9y44enpieiQDRuKjvmqYrGD8fz8/LFjx5opO4aiU9TO0qlIgOiUf9FRT8HSnnfywgsvTJ8+XdoD82d0rOnXV7fTYF2kuBw8eFD1qjhv3jw1csyYMcq34uLipEw0a9ZMr+KY76YY0bFP0VEaLTF49K9+i9QYTXTS0tJGjx4dEhIijdBTTz0leVDdO4hP6+q1v7+/Jjp//etfu3btKlGpV6/e0qVL1Xxk74waNUrm4+XlJdot+VR2JZw/f14WJy1TixYtvvjiC0THKc/oGK0qFjsYl8yoRwLGx8cnJSVJQsyLTlE7S6ciAaJjF0Vnx44d6knnugQGBl69etWU6FjZr69up8GGhIWFaY/zT01NVc8EGzZsmHpXvgnpVhyL3RQjOvYpOuPGjRM7qVWrlrQKosUNGzZUj+xTolNQUNC8eXMZfP/99yUqqm3TTuGYOqPTpEkTaZPWrFmjMiYtijRySoykJZP5SCzldbt27aT5kUU0btxYdXmdnp6utZSIjqOIjlFM/XSlW1UeWepgXDIpb8ngu+++q6ZfvXq1GdEpRmfpVCRAdOyl6Mi3mV69emlPx1eMHz/elOhY2a+vbqfBgnzf6tKli3w1r1ixoraUGjVqPPr9WaVqcMGCBWri48eP61Yci90UU1bsU3TkG/D06dPV2T75++WXX4q4aKIjkq2e35+TkyOD8t1dNUvqZIwp0VF9VMkXdBWAuLi47du3q+6QsrKy5C3RIK2j8j179qjXqqk7ceIEouNMZ3TMVJVHljoY154e+fnnnxstO49M9GdufWfpVCRAdOyr6OTl5e3evTs8PFwdum+++aYp0Slqv77qJJC3t7eM7NmzpzRRMqZr167qxy+jFUe1eVrFsdhNMWXFbkUnPT29WrVq6jRhbm6uruhol0QY/b5u/hqde/fuaTaj5uPr66v9iqHeWrNmzTfffKOu3lBvXbt2DdFxGtExX1UeWeqlwWLZeWSiP/MidZZORQJEx+6Kjhw86mB+77331JhPP/3U4k9X5vv1FbZt26YmkGIhg4WFhfXq1dNKUmpqqjqHrLVqpn66MtVNMWXFbkVHXo8bN05eT5s2TV7rio46E+Pl5VVQUGA4h1dffdVK0TF1Rke+7nNGx4lFx3xVsSg6xf7pqnidpVORANEpt6IjzcnkyZOPHDly+/ZtaTxmz56t2h6to7u///3v6uD/7rvv9C5GtrJfX+HChQvqKpzBgwffvXtXkyetJKmLkR977DE5hqWhUpdu6FYc890UU1bsWXR00RUd8Rt11fnYsWMlFSLQsk+1Jx28/fbbqvfN+/fvmxed/Pz8p556Su8aneeee05doxMSEsI1Ok4pOharisV+N1VUpI5JAZT4WbwYuaidpVORANGxi6IjhvHss8/WrFlT5Ea+r8iL1157TQ4k3dsZBgwYEBAQIN+Yda8Xtr5fX+3KntDQUNVjsCxUTaOVJHV7uSzF19dXtGnevHmq4qgbdrQbO011U0xZcUTRUZfayH5v3LixxK9BgwayTzXDlheSzCpVqsj0YWFhZkRH3TcujVbDhg0lG08++eS4ceNEa9R8EhMTO3fu7OPj8/TTTy9YsADRcRrRsVhVLIqOfDEbPXq0v7+/KjuRkZHW3F5epM7SqUiA6DhG0Sl71q9fryrO1q1by2sdKCvOlyuyQTZIHQCiUz7s2LFj4sSJ586dy87Olm9I6ucG+Y6lnqpCWaExo8khG6SO1AGi48BFJy8vb8GCBS1btvT09PTx8WnduvVnn32m7jqmrNCY0eSQDSB1gOgUv+iUe+/lhl3M2MM8KSs0ZmSjlLKh+zzAhIQEbfyBAwe08ePGjSuDXVka9a2ULtYhdYDoFLPo2EPv5YgOooPouKzoDB8+XBvfs2dPRIfUAaJj46JjD72XIzrO15jdvn17xIgRwcHBlStX9vb2rlev3pAhQ7R3xarfeOONwMBAd3d3kezXX39d9wY6dcdWv379dGdYvXp1o08X1J73j+g4qOj4+PioZ2Ffu3ZNPdjG0UWH1AGiY19Fp3i9l5d2p8HWzF+vl2CL86SslGWu1OP+pk2bJqGS3fTNN9/8z//8j3pr06ZN0p7Jbv32228zMjK2bNkiTV2lSpVka5sRHT017927N02OE4hOmzZt5G9kZKSMVJ1uPvfcc4aio04zq4dZNGrUyPBhFmaqjZmPm6pvJVyi4RkdyXznzp2lNMkMpTqpZyKQOkB0yqjoFK/3cl1lKY1Og62Zv14vwdbPk7JS2rm6f/++epLbvn379N7Kzc0NCAiQtyZMmKCNnDx5suqiSD3aGNFxHdFZuXKl/H3qqafkSK9Vq5a81p5QqomOejxp9erVY2NjU1JS2rdvb/h4UjPVxvzHjda3Ei5RT3Q++eQT1dnnV199JWb/yy+/aM+UJ3WA6JRF0SlG7+WG2LzTYGvmr9tLcDHmSVkp1VypX5rk+2ufPn0WLVokG1CN1zoY2r17tzZxTEyM7khEx3VEJz09vU6dOvJiyJAh8rd58+baY/2U6Bh2OBMdHW3Y4YypamPx44b1rYRL1BMd7fc4ORBIHSA65VZ0itp7+aPS7zTYmvnr9hJszTwpK2WZq6+//lqd1NHo379/YWGh9ijIn376SZv4n//8pxq5atUqRMelROfevXt/+9vftJAsWbJET3S0PsMXLlyoPnv58mXDLoRNVRuLHzesbyVc4iMTfZ4vWLCA1AGiU25FR2F97+Wl3WlwUef/yLqOiCkrZZwr2e/z58//85//7OXlpfaFfDPet2+f3nl+zui4uOjcuHHDw8NDHeBZWVl6oqP1Gb5o0SK9eqKrHaaqjcWPG9a3Ei7RlOhopYnUAaJTbqKjsKb38tLuNLio8+enK/tszDSSkpLUbwEbNmzIycnx9/fX6wZLXaMj+1eaPUTH1URHBvv27SuvR40apVsuTP10JZvd8IckU9XG4scN61sJl2j405Wam/yPpA4QnfIpOsXovby0Ow0u6vytmSdlpYxz1b59e0mO7Mq8vDzZhm5ubr6+vlL0H/3+6CYp/dWqVdu6davsX/nr4+Mj81+6dCl3Xbmm6OidCDR6MbIc2nFxcdevX1f3T+hdGmym2pj/uGF9K/kS9SZQVytL5sWTJPAJCQlDhw4ldYDolF3RKV7v5aXdaXCR5m/lPCkrZZmr7t27N2rUSPaFu7t7YGBgWFiYtBm6l4W9+eabjz/+uLoGS6RH9rjec3R0kd2K6Lis6KibvWW/q5u9Q0JCDG/2NlNtzH/caH0r4RINC5TI/UsvvSSHg7e3N7eXA6JTzj9dAWWlLHOVm5srni0zl3aFbJANIHWA6FB0KCvO1phdvHjxscceq1y58o8//kg2yAaQOkB0KDqUFRozskE2SB2iA4gOUFbIFdkgG6QOANEBygq5Ihtkg9QBIDqUFRozIBtkg9QBIDqUFRozskE2gNQBokPRoazQmJENsgGkDhAdig5lhcaMbJANUkfqANGh6FBWyBXZIBukDgDRAcoKuSIbZIPUASA6lBXKCrkiG2SD1AEgOpQVGjOyQTaA1AGiQ9GhrNCYkQ2yAaQOEB2KDmWFxoxskA0gdYDoUHQoKzRmZINskDoARAcoK+SKbJANUgeA6ABlhVyRDbJB6gAQHcoKjRnZIBtkg9QBooPoUFZozMgG2QBSB4gORYeyQmNGNsgGkDpAdCg6lBUaM7JBNkgdAKIDlBVyRTbIBqkDcB7RqVWrVgWwBb6+vpQVckU2yAapA7Av0REyMjKuXLmSkJBw6NChnTt3roHiIltPtqFsSdmeslVdPM3kimyQDVIHYBeik5mZmZKSkpiYeOLEiYMHD+6C4iJbT7ahbEnZnrJVXTzN5IpskA1SB2AXopOdnX379u3k5GQ5Hk6ePBkPxUW2nmxD2ZKyPWWruniayRXZIBukDsAuRCcvL09kX44Esf7Lly//CsVFtp5sQ9mSsj1lq7p4mskV2SAbpA7ALkTn/v37cgyI79+9ezctLe0WFBfZerINZUvK9pSt6uJpJldkg2yQOgC7EB1F4b94AMVF24ZEmVyRDbJB6gDsS3QAAAAAEB0AAAAARAcAAAAA0QEAAABEBwAAAADRAQAAAEB0AAAAABAdAAAAAEQHAAAAANEBAAAARAfRAQAAAEQHAAAAANEBAAAAQHQAAAAAEB0AAAAARAcAAAAQHUQHAAAAEB0AAAAARAcAAAAA0QEAAABAdAAAAAAQHQAAAABEBwAAABAdAAAAAEQHAAAAwN5FBwAAAMDJQHQAAAAA0QEAAABwNP4fWjzNNJegXMoAAAAASUVORK5CYII="></img></p>
+=for html <p><i>Figure 1</i><img src="data:image/png;base64,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"></img></p>
The nice thing about this is that we have well defined interfaces for the
objects that comprise the C<DeploymentHandler>, the smaller objects can be
@@ -274,6 +274,27 @@
=head1 METHODS
+This is just a "stub" section to make clear
+that the bulk of implementation is documented in
+L<DBIx::Class::DeploymentHandler::Dad>. Since that is implemented using
+L<Moose> class, see L<DBIx::Class::DeploymentHandler::Dad/ATTRIBUTES>
+and L<DBIx::Class::DeploymentHandler::Dad/"ORTHODOX METHODS"> for
+available attributes to pass to C<new>, and methods callable on the
+resulting object.
+
+=head2 new
+
+ my $s = My::Schema->connect(...);
+ my $dh = DBIx::Class::DeploymentHandler->new({
+ schema => $s,
+ databases => 'SQLite',
+ sql_translator_args => { add_drop_table => 0 },
+ });
+
+See L<DBIx::Class::DeploymentHandler::Dad/ATTRIBUTES> and
+L<DBIx::Class::DeploymentHandler::Dad/"ORTHODOX METHODS"> for available
+attributes to pass to C<new>.
+
=head2 prepare_version_storage_install
$dh->prepare_version_storage_install
@@ -300,7 +321,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Arthur Axel "fREW" Schmidt.
+This software is copyright (c) 2019 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/t/00-report-prereqs.t new/DBIx-Class-DeploymentHandler-0.002231/t/00-report-prereqs.t
--- old/DBIx-Class-DeploymentHandler-0.002222/t/00-report-prereqs.t 1970-01-01 01:00:00.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/t/00-report-prereqs.t 2019-05-10 15:28:52.000000000 +0200
@@ -0,0 +1,187 @@
+#!perl
+
+use strict;
+use warnings;
+
+# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.020
+# THEN modified with more info by Ed J for PDL project
+
+use Test::More tests => 1;
+
+use ExtUtils::MakeMaker;
+use File::Spec;
+
+# from $version::LAX
+my $lax_version_re =
+ qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )?
+ |
+ (?:\.[0-9]+) (?:_[0-9]+)?
+ ) | (?:
+ v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )?
+ |
+ (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)?
+ )
+ )/x;
+
+# hide optional CPAN::Meta modules from prereq scanner
+# and check if they are available
+my $cpan_meta = "CPAN::Meta";
+my $cpan_meta_pre = "CPAN::Meta::Prereqs";
+my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic
+
+# Verify requirements?
+my $DO_VERIFY_PREREQS = 1;
+
+sub _max {
+ my $max = shift;
+ $max = ( $_ > $max ) ? $_ : $max for @_;
+ return $max;
+}
+
+sub _merge_prereqs {
+ my ($collector, $prereqs) = @_;
+
+ # CPAN::Meta::Prereqs object
+ if (ref $collector eq $cpan_meta_pre) {
+ return $collector->with_merged_prereqs(
+ CPAN::Meta::Prereqs->new( $prereqs )
+ );
+ }
+
+ # Raw hashrefs
+ for my $phase ( keys %$prereqs ) {
+ for my $type ( keys %{ $prereqs->{$phase} } ) {
+ for my $module ( keys %{ $prereqs->{$phase}{$type} } ) {
+ $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module};
+ }
+ }
+ }
+
+ return $collector;
+}
+
+my @include = qw(
+
+);
+
+my @exclude = qw(
+
+);
+
+# Add static prereqs to the included modules list
+my $static_prereqs = do 't/00-report-prereqs.dd';
+
+# Merge all prereqs (either with ::Prereqs or a hashref)
+my $full_prereqs = _merge_prereqs(
+ ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ),
+ $static_prereqs
+);
+
+# Add dynamic prereqs to the included modules list (if we can)
+my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
+if ( $source && $HAS_CPAN_META ) {
+ if ( my $meta = eval { CPAN::Meta->load_file($source) } ) {
+ $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs);
+ }
+}
+else {
+ $source = 'static metadata';
+}
+
+my @full_reports;
+my @dep_errors;
+my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs;
+
+# Add static includes into a fake section
+for my $mod (@include) {
+ $req_hash->{other}{modules}{$mod} = 0;
+}
+
+for my $phase ( qw(configure build test runtime develop other) ) {
+ next unless $req_hash->{$phase};
+ next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING});
+
+ for my $type ( qw(requires recommends suggests conflicts modules) ) {
+ next unless $req_hash->{$phase}{$type};
+
+ my $title = ucfirst($phase).' '.ucfirst($type);
+ my @reports = [qw/Module Want Have Where Howbig/];
+
+ for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) {
+ next if $mod eq 'perl';
+ next if grep { $_ eq $mod } @exclude;
+
+ my $file = $mod;
+ $file =~ s{::}{/}g;
+ $file .= ".pm";
+ my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC;
+
+ my $want = $req_hash->{$phase}{$type}{$mod};
+ $want = "undef" unless defined $want;
+ $want = "any" if !$want && $want == 0;
+
+ my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required";
+
+ if ($prefix) {
+ my $filename = File::Spec->catfile($prefix, $file);
+ my $have = MM->parse_version( $filename );
+ $have = "undef" unless defined $have;
+ push @reports, [$mod, $want, $have, $prefix, (-s $filename)];
+
+ if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) {
+ if ( $have !~ /\A$lax_version_re\z/ ) {
+ push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)";
+ }
+ elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) {
+ push @dep_errors, "$mod version '$have' is not in required range '$want'";
+ }
+ }
+ }
+ else {
+ push @reports, [$mod, $want, "missing", '', 0];
+
+ if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) {
+ push @dep_errors, "$mod is not installed ($req_string)";
+ }
+ }
+ }
+
+ if ( @reports ) {
+ push @full_reports, "=== $title ===\n\n";
+
+ my $ml = _max( map { length $_->[0] } @reports );
+ my $wl = _max( map { length $_->[1] } @reports );
+ my $hl = _max( map { length $_->[2] } @reports );
+ my $ll = _max( map { length $_->[3] } @reports ); # location
+ my $sl = _max( map { length $_->[4] } @reports ); # size
+
+ if ($type eq 'modules') {
+ splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl, "-" x $ll, "-" x $sl];
+ push @full_reports, map { sprintf(" %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports;
+ }
+ else {
+ splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl, "-" x $ll, "-" x $sl];
+ push @full_reports, map { sprintf(" %*s %*s %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2], -$ll, $_->[3], $sl, $_->[4]) } @reports;
+ }
+
+ push @full_reports, "\n";
+ }
+ }
+}
+
+if ( @full_reports ) {
+ diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports;
+}
+
+if ( @dep_errors ) {
+ diag join("\n",
+ "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n",
+ "The following REQUIRED prerequisites were not satisfied:\n",
+ @dep_errors,
+ "\n"
+ );
+}
+
+pass;
+
+# vim: ts=4 sts=4 sw=4 et:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/t/10-split-sql-chunk.t new/DBIx-Class-DeploymentHandler-0.002231/t/10-split-sql-chunk.t
--- old/DBIx-Class-DeploymentHandler-0.002222/t/10-split-sql-chunk.t 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/t/10-split-sql-chunk.t 2019-05-10 15:28:52.000000000 +0200
@@ -5,16 +5,45 @@
use DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator;
-*split_sql_chunk =
-*DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::_split_sql_chunk;
+sub make_dm {
+ my ($storage_class) = @_;
+ bless {
+ storage => bless({}, 'DBIx::Class::Storage::DBI::'.$storage_class),
+ }, 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator';
+}
-is_deeply [ split_sql_chunk( <<'END' ) ], [ 'SELECT * FROM YADAH END' ];
+my $dm = make_dm('MySQL');
+
+is_deeply [ $dm->_split_sql_chunk( <<'END' ) ], [ 'SELECT * FROM YADAH END' ];
BEGIN
-- stuff
SELECT * FROM YADAH
END;
END
-is_deeply [ split_sql_chunk( 'foo', ' ', 'bar' ) ], [qw( foo bar)];
+is_deeply [ $dm->_split_sql_chunk( 'foo', ' ', 'bar' ) ], [qw(foo bar)];
+
+$dm = make_dm('Pg');
+is_deeply [ $dm->_split_sql_chunk( <<'END' ) ],
+-- Add triggers to maintain sync between list_material_ratings table and list_materials table:;
+CREATE FUNCTION add_rating() RETURNS trigger AS $add_rating$
+ BEGIN
+ IF NEW."type" = 'like' THEN
+ UPDATE "list_materials" SET "likes" = (SELECT COUNT(*) FROM "list_material_ratings" WHERE "list" = NEW."list" AND "material" = NEW."material" AND "type" = 'like') WHERE "list" = NEW."list" AND "material" = NEW."material";
+ END IF;
+ IF NEW."type" = 'dislike' THEN
+ UPDATE "list_materials" SET "dislikes" = (SELECT COUNT(*) FROM "list_material_ratings" WHERE "list" = NEW."list" AND "material" = NEW."material" AND "type" = 'dislike') WHERE "list" = NEW."list" AND "material" = NEW."material";
+ END IF;
+ RETURN NULL;
+ END;
+$add_rating$ LANGUAGE plpgsql;
+END
+ [ q{CREATE FUNCTION add_rating() RETURNS trigger AS $add_rating$ IF NEW."type" = 'like' THEN UPDATE "list_materials" SET "likes" = (SELECT COUNT(*) FROM "list_material_ratings" WHERE "list" = NEW."list" AND "material" = NEW."material" AND "type" = 'like') WHERE "list" = NEW."list" AND "material" = NEW."material"; END IF; IF NEW."type" = 'dislike' THEN UPDATE "list_materials" SET "dislikes" = (SELECT COUNT(*) FROM "list_material_ratings" WHERE "list" = NEW."list" AND "material" = NEW."material" AND "type" = 'dislike') WHERE "list" = NEW."list" AND "material" = NEW."material"; END IF; RETURN NULL; END; $add_rating$ LANGUAGE plpgsql} ];
+
+$dm = make_dm('Pg');
+is_deeply [ $dm->_split_sql_chunk( <<'END' ) ],
+CREATE TABLE "dbix_class_deploymenthandler_versions" ( "id" serial NOT NULL, "version" character varying(50) NOT NULL, "ddl" text, "upgrade_sql" text, PRIMARY KEY ("id"), CONSTRAINT "dbix_class_deploymenthandler_versions_version" UNIQUE ("version") )
+END
+ [ q{CREATE TABLE "dbix_class_deploymenthandler_versions" ( "id" serial NOT NULL, "version" character varying(50) NOT NULL, "ddl" text, "upgrade_sql" text, PRIMARY KEY ("id"), CONSTRAINT "dbix_class_deploymenthandler_versions_version" UNIQUE ("version") )} ];
done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/t/customised.t new/DBIx-Class-DeploymentHandler-0.002231/t/customised.t
--- old/DBIx-Class-DeploymentHandler-0.002222/t/customised.t 1970-01-01 01:00:00.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/t/customised.t 2019-05-10 15:28:52.000000000 +0200
@@ -0,0 +1,230 @@
+# This test represents darkpan code that subclasses DH using the recommended
+# method. Updates should make sure this doesn't break, since it breaks
+# real-world code!
+
+use strict;
+use warnings;
+
+use lib 't/lib';
+use DBICDHTest;
+use DBIx::Class::DeploymentHandler;
+{
+package DH;
+
+use Moose;
+
+has initial_version => (
+ is => 'ro',
+ lazy => 1,
+ builder => '_build_initial_version',
+);
+sub _build_initial_version { $_[0]->database_version }
+
+extends 'DBIx::Class::DeploymentHandler::Dad';
+# a single with would be better, but we can't do that
+# see: http://rt.cpan.org/Public/Bug/Display.html?id=46347
+with 'DBIx::Class::DeploymentHandler::WithApplicatorDumple' => {
+ interface_role => 'DBIx::Class::DeploymentHandler::HandlesDeploy',
+ class_name => 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator',
+ delegate_name => 'deploy_method',
+ attributes_to_assume => [qw(schema schema_version version_source)],
+ attributes_to_copy => [qw(
+ ignore_ddl databases script_directory sql_translator_args force_overwrite
+ )],
+ },
+ 'DBIx::Class::DeploymentHandler::WithApplicatorDumple' => {
+ interface_role => 'DBIx::Class::DeploymentHandler::HandlesVersioning',
+ class_name => 'DBIx::Class::DeploymentHandler::VersionHandler::Monotonic',
+ delegate_name => 'version_handler',
+ attributes_to_assume => [qw( initial_version schema_version to_version )],
+ },
+ 'DBIx::Class::DeploymentHandler::WithApplicatorDumple' => {
+ interface_role => 'DBIx::Class::DeploymentHandler::HandlesVersionStorage',
+ class_name => 'DBIx::Class::DeploymentHandler::VersionStorage::Standard',
+ delegate_name => 'version_storage',
+ attributes_to_assume => ['schema'],
+ attributes_to_copy => [qw(version_source version_class)],
+ };
+with 'DBIx::Class::DeploymentHandler::WithReasonableDefaults';
+
+sub prepare_version_storage_install {
+ my $self = shift;
+
+ $self->prepare_resultsource_install({
+ result_source => $self->version_storage->version_rs->result_source
+ });
+}
+
+sub install_version_storage {
+ my $self = shift;
+
+ my $version = (shift||{})->{version} || $self->schema_version;
+
+ $self->install_resultsource({
+ result_source => $self->version_storage->version_rs->result_source,
+ version => $version,
+ });
+}
+
+sub prepare_install {
+ $_[0]->prepare_deploy;
+ $_[0]->prepare_version_storage_install;
+}
+
+# the following is just a hack so that ->version_storage
+# won't be lazy
+sub BUILD { $_[0]->version_storage }
+__PACKAGE__->meta->make_immutable;
+
+}
+
+use Test::More;
+use File::Temp 'tempdir';
+use Test::Fatal qw(lives_ok dies_ok);
+
+my $dbh = DBICDHTest::dbh();
+my @connection = (sub { $dbh }, { ignore_version => 1 });
+my $sql_dir = tempdir( CLEANUP => 1 );
+
+VERSION1: {
+ use_ok 'DBICVersion_v1';
+ my $s = DBICVersion::Schema->connect(@connection);
+ $DBICVersion::Schema::VERSION = 1;
+ ok($s, 'DBICVersion::Schema 1 instantiates correctly');
+ my $handler = DH->new({
+ script_directory => $sql_dir,
+ schema => $s,
+ databases => 'SQLite',
+ sql_translator_args => { add_drop_table => 0 },
+ });
+
+ ok($handler, 'DBIx::Class::DeploymentHandler w/1 instantiates correctly');
+
+ my $version = $s->schema_version;
+ $handler->prepare_install;
+
+ dies_ok {
+ $s->resultset('Foo')->create({
+ bar => 'frew',
+ })
+ } 'schema not deployed';
+ $handler->install;
+ dies_ok {
+ $handler->install;
+ } 'cannot install twice';
+ lives_ok {
+ $s->resultset('Foo')->create({
+ bar => 'frew',
+ })
+ } 'schema is deployed';
+}
+
+VERSION2: {
+ use_ok 'DBICVersion_v2';
+ my $s = DBICVersion::Schema->connect(@connection);
+ $DBICVersion::Schema::VERSION = 2;
+ ok($s, 'DBICVersion::Schema 2 instantiates correctly');
+ my $handler = DH->new({
+ script_directory => $sql_dir,
+ schema => $s,
+ databases => 'SQLite',
+ });
+
+ ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly');
+
+ my $version = $s->schema_version();
+ $handler->prepare_install;
+ $handler->prepare_upgrade({ from_version => 1, to_version => $version} );
+ dies_ok {
+ $s->resultset('Foo')->create({
+ bar => 'frew',
+ baz => 'frew',
+ })
+ } 'schema not deployed';
+ dies_ok {
+ $s->resultset('Foo')->create({
+ bar => 'frew',
+ baz => 'frew',
+ })
+ } 'schema not uppgrayyed';
+ $handler->upgrade;
+ lives_ok {
+ $s->resultset('Foo')->create({
+ bar => 'frew',
+ baz => 'frew',
+ })
+ } 'schema is deployed';
+}
+
+VERSION3: {
+ use_ok 'DBICVersion_v3';
+ my $s = DBICVersion::Schema->connect(@connection);
+ $DBICVersion::Schema::VERSION = 3;
+ ok($s, 'DBICVersion::Schema 3 instantiates correctly');
+ my $handler = DH->new({
+ script_directory => $sql_dir,
+ schema => $s,
+ databases => 'SQLite',
+ });
+
+ ok($handler, 'DBIx::Class::DeploymentHandler w/3 instantiates correctly');
+
+ my $version = $s->schema_version();
+ $handler->prepare_install;
+ $handler->prepare_upgrade({ from_version => 2, to_version => $version });
+ dies_ok {
+ $s->resultset('Foo')->create({
+ bar => 'frew',
+ baz => 'frew',
+ biff => 'frew',
+ })
+ } 'schema not deployed';
+ $handler->upgrade;
+ lives_ok {
+ $s->resultset('Foo')->create({
+ bar => 'frew',
+ baz => 'frew',
+ biff => 'frew',
+ })
+ } 'schema is deployed';
+}
+
+DOWN2: {
+ use_ok 'DBICVersion_v4';
+ my $s = DBICVersion::Schema->connect(@connection);
+ $DBICVersion::Schema::VERSION = 2;
+ ok($s, 'DBICVersion::Schema 2 instantiates correctly');
+ my $handler = DH->new({
+ script_directory => $sql_dir,
+ schema => $s,
+ databases => 'SQLite',
+ });
+
+ ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly');
+
+ my $version = $s->schema_version();
+ $handler->prepare_downgrade({ from_version => 3, to_version => $version });
+ lives_ok {
+ $s->resultset('Foo')->create({
+ bar => 'frew',
+ baz => 'frew',
+ biff => 'frew',
+ })
+ } 'schema at version 3';
+ $handler->downgrade;
+ dies_ok {
+ $s->resultset('Foo')->create({
+ bar => 'frew',
+ baz => 'frew',
+ biff => 'frew',
+ })
+ } 'schema not at version 3';
+ lives_ok {
+ $s->resultset('Foo')->create({
+ bar => 'frew',
+ baz => 'frew',
+ })
+ } 'schema is at version 2';
+}
+
+done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/t/version_handlers/monotonic.t new/DBIx-Class-DeploymentHandler-0.002231/t/version_handlers/monotonic.t
--- old/DBIx-Class-DeploymentHandler-0.002222/t/version_handlers/monotonic.t 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/t/version_handlers/monotonic.t 2019-05-10 15:28:52.000000000 +0200
@@ -10,6 +10,14 @@
use aliased
'DBIx::Class::DeploymentHandler::VersionHandler::Monotonic';
+SKIP: {
+ skip 'no "version" installed', 1 if !eval { require version; 1 };
+ lives_ok { Monotonic->new({
+ schema_version => version->declare("2.0"),
+ database_version => 1,
+ }) } 'version-obj Ok';
+}
+
{
my $vh = Monotonic->new({
schema_version => 2,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBIx-Class-DeploymentHandler-0.002222/t/version_storages/standard.t new/DBIx-Class-DeploymentHandler-0.002231/t/version_storages/standard.t
--- old/DBIx-Class-DeploymentHandler-0.002222/t/version_storages/standard.t 2018-01-06 19:25:45.000000000 +0100
+++ new/DBIx-Class-DeploymentHandler-0.002231/t/version_storages/standard.t 2019-05-10 15:28:52.000000000 +0200
@@ -10,6 +10,7 @@
use aliased 'DBIx::Class::DeploymentHandler::VersionStorage::Standard';
use aliased 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator';
use File::Temp 'tempdir';
+use File::Find;
use DBICVersion_v1;
use DBIx::Class::DeploymentHandler;
@@ -88,4 +89,17 @@
$vs->version_rs->delete;
ok( $vs->version_storage_is_installed, 'VersionStorage is still installed even if all versions are deleted' );
+
+my @resulting_files;
+find(sub { -f and push @resulting_files, $File::Find::name }, $sql_dir);
+for (@resulting_files) {
+ my $contents = do {
+ local $/;
+ open my $fh, $_ or die;
+ binmode $fh, ':raw';
+ <$fh>
+ };
+ is index($contents, "\015\012"), -1, "$_ no CRLF";
+}
+
done_testing;
1
0
Hello community,
here is the log from the commit of package 000update-repos for openSUSE:Factory checked in at 2019-05-23 21:04:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000update-repos (Old)
and /work/SRC/openSUSE:Factory/.000update-repos.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000update-repos"
Thu May 23 21:04:38 2019 rev:267 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
New:
----
42.3:update_1558604952.packages.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0
Hello community,
here is the log from the commit of package 000update-repos for openSUSE:Factory checked in at 2019-05-23 21:04:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000update-repos (Old)
and /work/SRC/openSUSE:Factory/.000update-repos.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000update-repos"
Thu May 23 21:04:30 2019 rev:266 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
New:
----
15.0:update_1558601728.packages.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0
Hello community,
here is the log from the commit of package 000product for openSUSE:Factory checked in at 2019-05-23 10:05:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000product (Old)
and /work/SRC/openSUSE:Factory/.000product.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000product"
Thu May 23 10:05:36 2019 rev:1263 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
openSUSE-MicroOS-dvd5-dvd-x86_64.kiwi: same change
openSUSE-MicroOS-dvd5-kubic-dvd-x86_64.kiwi: same change
openSUSE-cd-mini-i586.kiwi: same change
openSUSE-cd-mini-x86_64.kiwi: same change
openSUSE-dvd5-dvd-i586.kiwi: same change
++++++ openSUSE-dvd5-dvd-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.HK6h3I/_old 2019-05-23 10:05:45.312629573 +0200
+++ /var/tmp/diff_new_pack.HK6h3I/_new 2019-05-23 10:05:45.336629564 +0200
@@ -1099,8 +1099,6 @@
<repopackage name="inn"/>
<repopackage name="insserv-compat"/>
<repopackage name="inst-source-utils"/>
- <repopackage name="install-initrd-Kubic" arch="x86_64"/>
- <repopackage name="install-initrd-MicroOS" arch="x86_64"/>
<repopackage name="intel-vaapi-driver"/>
<repopackage name="intlfonts-euro-bitmap-fonts"/>
<repopackage name="intltool"/>
stub.kiwi: same change
++++++ dvd.group ++++++
--- /var/tmp/diff_new_pack.HK6h3I/_old 2019-05-23 10:05:46.632629077 +0200
+++ /var/tmp/diff_new_pack.HK6h3I/_new 2019-05-23 10:05:46.656629068 +0200
@@ -5623,8 +5623,6 @@
<package name="gtk2-tools-32bit" supportstatus="unsupported"/> <!-- reason: dvd:patterns-media-rest_dvd -->
<package name="guestfs-data" supportstatus="unsupported"/> <!-- reason: dvd:expansion -->
<package name="ibus-gtk-32bit" supportstatus="unsupported"/> <!-- reason: dvd:patterns-media-rest_dvd -->
- <package name="install-initrd-Kubic" supportstatus="unsupported"/> <!-- reason: dvd:expansion -->
- <package name="install-initrd-MicroOS" supportstatus="unsupported"/> <!-- reason: dvd:expansion -->
<package name="kernel-syms" supportstatus="unsupported"/> <!-- reason: dvd:patterns-devel-base-devel_kernel -->
<package name="kernel-vanilla" supportstatus="unsupported"/> <!-- reason: dvd:patterns-devel-osc-devel_osc_build -->
<package name="kmozillahelper" supportstatus="unsupported"/> <!-- reason: dvd:patterns-kde-kde -->
++++++ unsorted.yml ++++++
--- /var/tmp/diff_new_pack.HK6h3I/_old 2019-05-23 10:05:47.612628709 +0200
+++ /var/tmp/diff_new_pack.HK6h3I/_new 2019-05-23 10:05:47.620628705 +0200
@@ -5273,6 +5273,8 @@
- input-pad-eek
- input-pad-xtest
- inspectrum
+ - install-initrd-Kubic: [x86_64] # suggested by dvd:suggested:patterns-gnome-gnome
+ - install-initrd-MicroOS: [x86_64] # suggested by dvd:suggested:patterns-gnome-gnome
- install-initrd-openSUSE
- installation-images-Kubic: [x86_64]
- installation-images-MicroOS: [x86_64]
1
0
Hello community,
here is the log from the commit of package 000package-groups for openSUSE:Factory checked in at 2019-05-23 09:42:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000package-groups (Old)
and /work/SRC/openSUSE:Factory/.000package-groups.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000package-groups"
Thu May 23 09:42:36 2019 rev:75 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ groups.yml ++++++
--- /var/tmp/diff_new_pack.S4LnpA/_old 2019-05-23 09:42:40.933267812 +0200
+++ /var/tmp/diff_new_pack.S4LnpA/_new 2019-05-23 09:42:40.953267805 +0200
@@ -200,7 +200,6 @@
- gnu-free-fonts: [locked]
- frozen-bubble: [locked]
- marble: [locked]
- - calibre: [locked]
- digikam: [locked]
- digikam-doc: [locked]
- gimp-help: [locked]
@@ -284,6 +283,8 @@
- gcin-branding-upstream: [locked]
- gimp-help: [locked]
- install-initrd-openSUSE: [locked]
+ - install-initrd-Kubic: [locked]
+ - install-initrd-MicroOS: [locked]
- laptop-mode-tools: [locked]
- libreoffice-branding-upstream: [locked]
- poppler-data: [locked]
1
0
Hello community,
here is the log from the commit of package 000product for openSUSE:Factory checked in at 2019-05-23 09:13:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000product (Old)
and /work/SRC/openSUSE:Factory/.000product.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000product"
Thu May 23 09:13:03 2019 rev:1262 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
openSUSE-MicroOS-dvd5-dvd-x86_64.kiwi: same change
openSUSE-MicroOS-dvd5-kubic-dvd-x86_64.kiwi: same change
openSUSE-cd-mini-i586.kiwi: same change
openSUSE-cd-mini-x86_64.kiwi: same change
openSUSE-dvd5-dvd-i586.kiwi: same change
openSUSE-dvd5-dvd-x86_64.kiwi: same change
openSUSE-ftp-ftp-i586_x86_64.kiwi: same change
stub.kiwi: same change
++++++ dvd.group ++++++
--- /var/tmp/diff_new_pack.Op1ppD/_old 2019-05-23 09:13:10.489834088 +0200
+++ /var/tmp/diff_new_pack.Op1ppD/_new 2019-05-23 09:13:10.513834081 +0200
@@ -3457,7 +3457,6 @@
<package name="patterns-base-enhanced_base" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
<package name="patterns-base-enhanced_base_opt" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
<package name="patterns-base-minimal_base" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
- <!-- patterns-base-minimal_base_conflicts not found on i586,x86_64-->
<package name="patterns-base-sw_management" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
<package name="patterns-base-transactional_base" supportstatus="unsupported"/> <!-- reason: dvd:patterns-base-transactional_base -->
<package name="patterns-base-x11" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
1
0
Hello community,
here is the log from the commit of package 000package-groups for openSUSE:Factory checked in at 2019-05-23 08:53:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000package-groups (Old)
and /work/SRC/openSUSE:Factory/.000package-groups.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000package-groups"
Thu May 23 08:53:14 2019 rev:74 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ groups.yml ++++++
--- /var/tmp/diff_new_pack.kXEnrv/_old 2019-05-23 08:53:16.746233138 +0200
+++ /var/tmp/diff_new_pack.kXEnrv/_new 2019-05-23 08:53:16.746233138 +0200
@@ -78,7 +78,6 @@
- patterns-lxde-lxde_laptop: [suggested]
- patterns-server-mail_server: [suggested]
- patterns-desktop-multimedia: [suggested]
- - patterns-desktop-multimedia_opt: [suggested]
- patterns-network-network_admin: [suggested]
- patterns-office-office: [suggested]
- patterns-server-printing: [suggested]
@@ -164,7 +163,6 @@
- patterns-desktop-books: [suggested]
- patterns-server-kvm_server: [suggested]
- patterns-base-minimal_base: [suggested]
- - patterns-base-minimal_base_conflicts: [suggested]
- patterns-yast-x11_yast: [suggested]
- patterns-server-xen_server: [suggested]
# bnc#431280 (Japanese fonts)
@@ -202,6 +200,7 @@
- gnu-free-fonts: [locked]
- frozen-bubble: [locked]
- marble: [locked]
+ - calibre: [locked]
- digikam: [locked]
- digikam-doc: [locked]
- gimp-help: [locked]
1
0
Hello community,
here is the log from the commit of package 000package-groups for openSUSE:Factory checked in at 2019-05-23 08:25:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000package-groups (Old)
and /work/SRC/openSUSE:Factory/.000package-groups.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000package-groups"
Thu May 23 08:25:44 2019 rev:73 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ groups.yml ++++++
--- /var/tmp/diff_new_pack.74CuRR/_old 2019-05-23 08:25:48.014821552 +0200
+++ /var/tmp/diff_new_pack.74CuRR/_new 2019-05-23 08:25:48.018821550 +0200
@@ -40,7 +40,6 @@
- patterns-gnome-gnome_utilities: [suggested]
- patterns-gnome-gnome_yast: [suggested]
- patterns-desktop-imaging: [suggested]
- - patterns-desktop-imaging_opt: [suggested]
- patterns-kde-kde: [suggested]
- patterns-kde-kde_edutainment: [suggested]
- patterns-kde-kde_games: [suggested]
1
0
Hello community,
here is the log from the commit of package 000product for openSUSE:Factory checked in at 2019-05-22 21:58:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000product (Old)
and /work/SRC/openSUSE:Factory/.000product.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000product"
Wed May 22 21:58:55 2019 rev:1261 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-Addon-NonOss-ftp-ftp-i586_x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.Lwud3t/_old 2019-05-22 21:59:01.088401476 +0200
+++ /var/tmp/diff_new_pack.Lwud3t/_new 2019-05-22 21:59:01.100401470 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE-Addon-NonOss___20190521" schemaversion="4.1">
+<image name="OBS__openSUSE-Addon-NonOss___20190522" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -36,11 +36,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20190521</productvar>
+ <productvar name="VERSION">20190522</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse-addon-nonoss:20190521,openSUSE NonOSS Addon</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse-addon-nonoss:20190522,openSUSE NonOSS Addon</productinfo>
<productinfo name="LINGUAS">af ar be_BY bg br ca cy el et ga gl gu_IN he hi_IN hr ka km ko lt mk nn pa_IN rw sk sl sr_CS ss st tg th tr uk ve vi xh zu </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-Addon-NonOss/2019… obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-Addon-NonOss/2019…</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-Addon-NonOss/2019… obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-Addon-NonOss/2019…</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
++++++ openSUSE-MicroOS-dvd5-dvd-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.Lwud3t/_old 2019-05-22 21:59:01.324401371 +0200
+++ /var/tmp/diff_new_pack.Lwud3t/_new 2019-05-22 21:59:01.344401362 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE-MicroOS___20190521" schemaversion="4.1">
+<image name="OBS__openSUSE-MicroOS___20190522" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -35,11 +35,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20190521</productvar>
+ <productvar name="VERSION">20190522</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse-microos:20190521,openSUSE MicroOS</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse-microos:20190522,openSUSE MicroOS</productinfo>
<productinfo name="LINGUAS">en_US </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-MicroOS/20190521/…</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-MicroOS/20190522/…</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
openSUSE-MicroOS-dvd5-kubic-dvd-x86_64.kiwi: same change
++++++ openSUSE-cd-mini-i586.kiwi ++++++
--- /var/tmp/diff_new_pack.Lwud3t/_old 2019-05-22 21:59:01.848401139 +0200
+++ /var/tmp/diff_new_pack.Lwud3t/_new 2019-05-22 21:59:01.876401127 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20190521" schemaversion="4.1">
+<image name="OBS__openSUSE___20190522" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -32,11 +32,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20190521</productvar>
+ <productvar name="VERSION">20190522</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20190521,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20190522,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190521/i586</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190522/i586</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
++++++ openSUSE-cd-mini-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.Lwud3t/_old 2019-05-22 21:59:02.052401049 +0200
+++ /var/tmp/diff_new_pack.Lwud3t/_new 2019-05-22 21:59:02.064401044 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20190521" schemaversion="4.1">
+<image name="OBS__openSUSE___20190522" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -35,11 +35,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20190521</productvar>
+ <productvar name="VERSION">20190522</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20190521,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20190522,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190521/x86_64</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190522/x86_64</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
++++++ openSUSE-dvd5-dvd-i586.kiwi ++++++
--- /var/tmp/diff_new_pack.Lwud3t/_old 2019-05-22 21:59:02.244400964 +0200
+++ /var/tmp/diff_new_pack.Lwud3t/_new 2019-05-22 21:59:02.256400959 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20190521" schemaversion="4.1">
+<image name="OBS__openSUSE___20190522" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -32,11 +32,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20190521</productvar>
+ <productvar name="VERSION">20190522</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20190521,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20190522,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190521/i586</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190522/i586</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
@@ -508,7 +508,6 @@
<repopackage name="evince-plugin-djvudocument"/>
<repopackage name="evince-plugin-dvidocument"/>
<repopackage name="evince-plugin-pdfdocument"/>
- <repopackage name="evince-plugin-psdocument"/>
<repopackage name="evince-plugin-tiffdocument"/>
<repopackage name="evince-plugin-xpsdocument"/>
<repopackage name="evolution"/>
++++++ openSUSE-dvd5-dvd-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.Lwud3t/_old 2019-05-22 21:59:02.512400845 +0200
+++ /var/tmp/diff_new_pack.Lwud3t/_new 2019-05-22 21:59:02.544400831 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20190521" schemaversion="4.1">
+<image name="OBS__openSUSE___20190522" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -35,11 +35,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20190521</productvar>
+ <productvar name="VERSION">20190522</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20190521,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20190522,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190521/x86_64</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190522/x86_64</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
@@ -524,7 +524,6 @@
<repopackage name="evince-plugin-djvudocument"/>
<repopackage name="evince-plugin-dvidocument"/>
<repopackage name="evince-plugin-pdfdocument"/>
- <repopackage name="evince-plugin-psdocument"/>
<repopackage name="evince-plugin-tiffdocument"/>
<repopackage name="evince-plugin-xpsdocument"/>
<repopackage name="evolution"/>
++++++ openSUSE-ftp-ftp-i586_x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.Lwud3t/_old 2019-05-22 21:59:02.768400732 +0200
+++ /var/tmp/diff_new_pack.Lwud3t/_new 2019-05-22 21:59:02.796400720 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20190521" schemaversion="4.1">
+<image name="OBS__openSUSE___20190522" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -24,7 +24,7 @@
<productvar name="DISTNAME">openSUSE</productvar>
<productvar name="FLAVOR">ftp</productvar>
<productvar name="MAKE_LISTINGS">true</productvar>
- <productvar name="MEDIUM_NAME">openSUSE-20190521-i586-x86_64</productvar>
+ <productvar name="MEDIUM_NAME">openSUSE-20190522-i586-x86_64</productvar>
<productvar name="MULTIPLE_MEDIA">true</productvar>
<productvar name="PRODUCT_DIR">/</productvar>
<productvar name="PRODUCT_NAME">$DISTNAME-$FLAVOR</productvar>
@@ -36,11 +36,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20190521</productvar>
+ <productvar name="VERSION">20190522</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20190521,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20190522,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190521/i586 obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190521/x86_64</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190522/i586 obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20190522/x86_64</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="DEBUGMEDIUM">2</productoption>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
++++++ dvd.group ++++++
--- /var/tmp/diff_new_pack.Lwud3t/_old 2019-05-22 21:59:03.792400279 +0200
+++ /var/tmp/diff_new_pack.Lwud3t/_new 2019-05-22 21:59:03.808400271 +0200
@@ -509,7 +509,6 @@
<package name="evince-plugin-djvudocument" supportstatus="unsupported"/> <!-- reason: dvd:expansion -->
<package name="evince-plugin-dvidocument" supportstatus="unsupported"/> <!-- reason: dvd:expansion -->
<package name="evince-plugin-pdfdocument" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
- <package name="evince-plugin-psdocument" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
<package name="evince-plugin-tiffdocument" supportstatus="unsupported"/> <!-- reason: dvd:expansion -->
<package name="evince-plugin-xpsdocument" supportstatus="unsupported"/> <!-- reason: dvd:expansion -->
<package name="evolution" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
@@ -2811,7 +2810,7 @@
<package name="libsox3" supportstatus="unsupported"/> <!-- reason: dvd:patterns-xfce-xfce -->
<package name="libsoxr0" supportstatus="unsupported"/> <!-- reason: dvd:kernel-default -->
<package name="libspandsp2" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
- <package name="libspectre1" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
+ <package name="libspectre1" supportstatus="unsupported"/> <!-- reason: dvd:patterns-lxde-lxde -->
<package name="libspeechd2" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
<package name="libspeex1" supportstatus="unsupported"/> <!-- reason: dvd:kernel-default -->
<package name="libspeexdsp1" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
++++++ opensuse_kubic.group ++++++
--- /var/tmp/diff_new_pack.Lwud3t/_old 2019-05-22 21:59:04.420400000 +0200
+++ /var/tmp/diff_new_pack.Lwud3t/_new 2019-05-22 21:59:04.432399996 +0200
@@ -190,7 +190,7 @@
<package name="fcoe-utils" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="gettext-runtime" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="gio-branding-openSUSE" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
- <package name="glib-networking" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
+ <package name="glib-networking" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-container_runtime -->
<package name="glib2-tools" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="glibc-locale" supportstatus="unsupported"/> <!-- reason: opensuse_microos:patterns-microos-onlyDVD -->
<package name="glibc-locale-base" supportstatus="unsupported"/> <!-- reason: opensuse_microos:patterns-microos-onlyDVD -->
@@ -202,7 +202,7 @@
<package name="grub2-i386-pc" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="grub2-snapper-plugin" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="grub2-x86_64-efi" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
- <package name="gsettings-desktop-schemas" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
+ <package name="gsettings-desktop-schemas" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-container_runtime -->
<package name="haveged" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="health-checker" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="health-checker-plugins-MicroOS" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
@@ -235,7 +235,7 @@
<package name="less" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="libGeoIP1" supportstatus="unsupported"/> <!-- reason: opensuse_microos:patterns-microos-cloud -->
<package name="libaio1" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
- <package name="libarchive13" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
+ <package name="libarchive13" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-container_runtime -->
<package name="libassuan0" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="libaugeas0" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="libauparse0" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
@@ -313,7 +313,7 @@
<package name="libnuma1" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="liboath0" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="libopeniscsiusr0_2_0" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
- <package name="libostree-1-1" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
+ <package name="libostree-1-1" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-container_runtime -->
<package name="libparted0" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="libpath_utils1" supportstatus="unsupported"/> <!-- reason: opensuse_microos:patterns-microos-sssd_ldap -->
<package name="libpci3" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
@@ -340,7 +340,7 @@
<package name="libsodium23" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubic_worker -->
<package name="libsoftokn3" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="libsolv-tools" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
- <package name="libsoup-2_4-1" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
+ <package name="libsoup-2_4-1" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-container_runtime -->
<package name="libsqlite3-0" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="libssh4" supportstatus="unsupported"/> <!-- reason: opensuse_kubic:patterns-containers-kubeadm -->
<package name="libsss_certmap0" supportstatus="unsupported"/> <!-- reason: opensuse_microos:patterns-microos-sssd_ldap -->
++++++ unsorted.yml ++++++
++++ 895 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/000product/unsorted.yml
++++ and /work/SRC/openSUSE:Factory/.000product.new.5148/unsorted.yml
1
0
Hello community,
here is the log from the commit of package 000release-packages for openSUSE:Factory checked in at 2019-05-22 21:58:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000release-packages (Old)
and /work/SRC/openSUSE:Factory/.000release-packages.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000release-packages"
Wed May 22 21:58:49 2019 rev:146 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-Addon-NonOss-release.spec ++++++
--- /var/tmp/diff_new_pack.zoqoOm/_old 2019-05-22 21:58:54.032404598 +0200
+++ /var/tmp/diff_new_pack.zoqoOm/_new 2019-05-22 21:58:54.040404595 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package openSUSE-Addon-NonOss-release (Version 20190521)
+# spec file for package openSUSE-Addon-NonOss-release (Version 20190522)
#
# Copyright (c) 2019 openSUSE.
#
@@ -16,16 +16,16 @@
Name: openSUSE-Addon-NonOss-release
%define product openSUSE-Addon-NonOss
Summary: openSUSE NonOSS Addon
-Version: 20190521
+Version: 20190522
Release: 0
License: BSD-3-Clause
Group: System/Fhs
Provides: %name-%version
Provides: product() = openSUSE-Addon-NonOss
-Provides: product(openSUSE-Addon-NonOss) = 20190521-0
+Provides: product(openSUSE-Addon-NonOss) = 20190522-0
Provides: product-label() = non%20oss%20addon
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20190521
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20190522
AutoReqProv: on
@@ -49,10 +49,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE-Addon-NonOss</name>
- <version>20190521</version>
+ <version>20190522</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20190521</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20190522</cpeid>
<register>
<pool>
</pool>
++++++ openSUSE-MicroOS-release.spec ++++++
--- /var/tmp/diff_new_pack.zoqoOm/_old 2019-05-22 21:58:54.088404573 +0200
+++ /var/tmp/diff_new_pack.zoqoOm/_new 2019-05-22 21:58:54.100404568 +0200
@@ -17,7 +17,7 @@
Name: openSUSE-MicroOS-release
-Version: 20190521
+Version: 20190522
Release: 0
Summary: openSUSE MicroOS
License: GPL-2.0-or-later
@@ -40,9 +40,9 @@
ExclusiveArch: %ix86 x86_64 ppc64le s390x aarch64
Provides: %name-%version
Provides: product() = openSUSE-MicroOS
-Provides: product(openSUSE-MicroOS) = 20190521-0
+Provides: product(openSUSE-MicroOS) = 20190522-0
Provides: product-label() = openSUSE%20MicroOS
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Dmicroos%3A20190521
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Dmicroos%3A20190522
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(openSUSE-MicroOS)
@@ -58,7 +58,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(openSUSE-MicroOS) = 20190521-0
+Provides: product_flavor(openSUSE-MicroOS) = 20190522-0
Summary: openSUSE MicroOS
%description dvd
@@ -74,7 +74,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(kubic-dvd)
-Provides: product_flavor(openSUSE-MicroOS) = 20190521-0
+Provides: product_flavor(openSUSE-MicroOS) = 20190522-0
Summary: openSUSE MicroOS
%description kubic-dvd
@@ -90,7 +90,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(openSUSE-MicroOS) = 20190521-0
+Provides: product_flavor(openSUSE-MicroOS) = 20190522-0
Summary: openSUSE MicroOS
%description appliance
@@ -106,7 +106,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-kubic)
-Provides: product_flavor(openSUSE-MicroOS) = 20190521-0
+Provides: product_flavor(openSUSE-MicroOS) = 20190522-0
Summary: openSUSE MicroOS
%description appliance-kubic
@@ -164,11 +164,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE-MicroOS</name>
- <version>20190521</version>
+ <version>20190522</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse-microos:20190521</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse-microos:20190522</cpeid>
<productline>openSUSE-MicroOS</productline>
<register>
<pool>
++++++ openSUSE-release.spec ++++++
--- /var/tmp/diff_new_pack.zoqoOm/_old 2019-05-22 21:58:54.144404548 +0200
+++ /var/tmp/diff_new_pack.zoqoOm/_new 2019-05-22 21:58:54.152404545 +0200
@@ -20,7 +20,7 @@
#define betaversion %{nil}
%define codename Tumbleweed
Name: openSUSE-release
-Version: 20190521
+Version: 20190522
Release: 0
# 0 is the product release, not the build release of this package
Summary: openSUSE Tumbleweed
@@ -55,7 +55,7 @@
Obsoletes: aaa_version
Obsoletes: openSUSE-Promo-release <= 11.1
Obsoletes: openSUSE-release-live <= 11.0
-Obsoletes: product_flavor(%{product}) < 20190521
+Obsoletes: product_flavor(%{product}) < 20190522
# bnc#826592
Provides: weakremover(kernel-default) < 3.11
Provides: weakremover(kernel-desktop) < 4.2
@@ -183,7 +183,7 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = openSUSE
-Provides: product(openSUSE) = 20190521-0
+Provides: product(openSUSE) = 20190522-0
%ifarch x86_64
Provides: product-register-target() = openSUSE%2DTumbleweed%2Dx86_64
%endif
@@ -197,7 +197,7 @@
Provides: product-register-target() = openSUSE%2DTumbleweed%2Daarch64
%endif
Provides: product-label() = openSUSE
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20190521
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20190522
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-url(repository) = http%3A%2F%2Fdownload.opensuse.org%2Ftumbleweed%2Frepo%2Foss%2F
Requires: product_flavor(openSUSE)
@@ -211,7 +211,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(ftp)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description ftp
@@ -226,7 +226,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(mini)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description mini
@@ -241,7 +241,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description dvd
@@ -256,7 +256,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-kde)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description livecd-kde
@@ -271,7 +271,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-x11)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description livecd-x11
@@ -286,7 +286,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-gnome)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description livecd-gnome
@@ -301,7 +301,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-xfce)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description livecd-xfce
@@ -316,7 +316,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-kde)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description usb-kde
@@ -331,7 +331,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-gnome)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description usb-gnome
@@ -346,7 +346,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-x11)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description usb-x11
@@ -361,7 +361,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(openSUSE) = 20190521-0
+Provides: product_flavor(openSUSE) = 20190522-0
Summary: openSUSE Tumbleweed
%description appliance
@@ -435,10 +435,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20190521</version>
+ <version>20190522</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse:20190521</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse:20190522</cpeid>
<productline>openSUSE</productline>
<register>
<pool>
++++++ weakremovers.inc ++++++
--- /var/tmp/diff_new_pack.zoqoOm/_old 2019-05-22 21:58:54.328404468 +0200
+++ /var/tmp/diff_new_pack.zoqoOm/_new 2019-05-22 21:58:54.332404466 +0200
@@ -6085,6 +6085,7 @@
Provides: weakremover(python-iso8601)
Provides: weakremover(python-itsdangerous)
Provides: weakremover(python-jsonpath-rw)
+Provides: weakremover(python-jupyter_core-doc-html)
Provides: weakremover(python-kid)
Provides: weakremover(python-killswitch)
Provides: weakremover(python-lazr.uri)
@@ -6128,7 +6129,6 @@
Provides: weakremover(python-qscintilla-sip)
Provides: weakremover(python-random2)
Provides: weakremover(python-retry_decorator)
-Provides: weakremover(python-scipy)
Provides: weakremover(python-scitools)
Provides: weakremover(python-scripttest)
Provides: weakremover(python-simplegeneric)
@@ -6159,8 +6159,6 @@
Provides: weakremover(python3-Werkzeug-doc)
Provides: weakremover(python3-boto-doc)
Provides: weakremover(python3-doc-pdf)
-Provides: weakremover(python3-jupyter_client-doc)
-Provides: weakremover(python3-jupyter_core-doc-html)
Provides: weakremover(python3-matplotlib-gtk2)
Provides: weakremover(python3-mock-doc)
Provides: weakremover(python3-numpy-doc)
@@ -8167,7 +8165,6 @@
Provides: weakremover(cloud-init-test)
Provides: weakremover(cmpi-bindings-ruby-doc)
Provides: weakremover(cmpi-pywbem-software)
-Provides: weakremover(cobbler-tests)
Provides: weakremover(collectd-plugin-python)
Provides: weakremover(colorblind-devel)
Provides: weakremover(comix)
@@ -8452,6 +8449,7 @@
Provides: weakremover(gconf-editor-lang)
Provides: weakremover(gconf2-branding-openSUSE)
Provides: weakremover(gconfmm-devel)
+Provides: weakremover(gedit-plugin-code-assistance)
Provides: weakremover(gegl-0_2)
Provides: weakremover(gegl-0_2-lang)
Provides: weakremover(gegl-0_3)
@@ -15629,7 +15627,6 @@
Provides: weakremover(python-jsonrpclib)
Provides: weakremover(python-junitxml)
Provides: weakremover(python-jupyter_ipyparallel-doc)
-Provides: weakremover(python-jupyter_ipyparallel-nbextension)
Provides: weakremover(python-kde4)
Provides: weakremover(python-kde4-devel)
Provides: weakremover(python-kde4-doc)
@@ -15656,6 +15653,7 @@
Provides: weakremover(python-libstoragemgmt)
Provides: weakremover(python-libstoragemgmt-clibs)
Provides: weakremover(python-lilv)
+Provides: weakremover(python-llfuse-docs)
Provides: weakremover(python-louis)
Provides: weakremover(python-lxc-python2)
Provides: weakremover(python-manilaclient-test)
@@ -15813,33 +15811,18 @@
Provides: weakremover(python2-humanfriendly-test)
Provides: weakremover(python2-hypothesis-test)
Provides: weakremover(python2-imbox)
-Provides: weakremover(python2-ipdb)
Provides: weakremover(python2-irc)
Provides: weakremover(python2-jellyfish)
Provides: weakremover(python2-jupyter_Video_Widget)
-Provides: weakremover(python2-jupyter_altair-widgets)
-Provides: weakremover(python2-jupyter_bqplot)
Provides: weakremover(python2-jupyter_cms)
-Provides: weakremover(python2-jupyter_contrib_nbextensions)
Provides: weakremover(python2-jupyter_dashboards)
Provides: weakremover(python2-jupyter_full_width)
Provides: weakremover(python2-jupyter_hide_code)
-Provides: weakremover(python2-jupyter_ipdb)
-Provides: weakremover(python2-jupyter_ipydatawidgets)
-Provides: weakremover(python2-jupyter_ipympl)
-Provides: weakremover(python2-jupyter_ipyparallel)
-Provides: weakremover(python2-jupyter_ipyscales)
-Provides: weakremover(python2-jupyter_jgraph)
Provides: weakremover(python2-jupyter_matlab_kernel)
Provides: weakremover(python2-jupyter_nbpresent)
-Provides: weakremover(python2-jupyter_nbsphinx)
-Provides: weakremover(python2-jupyter_nbsphinx_link)
-Provides: weakremover(python2-jupyter_qgrid)
Provides: weakremover(python2-jupyter_rise)
Provides: weakremover(python2-jupyter_sphinx_theme)
Provides: weakremover(python2-jupyter_themer)
-Provides: weakremover(python2-jupyter_vega)
-Provides: weakremover(python2-jupyter_watermark)
Provides: weakremover(python2-jupyter_wysiwyg)
Provides: weakremover(python2-libieee1284)
Provides: weakremover(python2-lxml-doc)
@@ -15858,6 +15841,8 @@
Provides: weakremover(python2-numpy_1_15_4-gnu-hpc-devel)
Provides: weakremover(python2-numpy_1_16_1-gnu-hpc)
Provides: weakremover(python2-numpy_1_16_1-gnu-hpc-devel)
+Provides: weakremover(python2-numpy_1_16_2-gnu-hpc)
+Provides: weakremover(python2-numpy_1_16_2-gnu-hpc-devel)
Provides: weakremover(python2-oauth2client-django)
Provides: weakremover(python2-odict)
Provides: weakremover(python2-openwsman)
@@ -15878,6 +15863,7 @@
Provides: weakremover(python2-qscintilla-qt4)
Provides: weakremover(python2-requests-test)
Provides: weakremover(python2-setuptools_scm-test)
+Provides: weakremover(python2-sigal)
Provides: weakremover(python2-simplejson-test)
Provides: weakremover(python2-sparse)
Provides: weakremover(python2-sphinxcontrib)
@@ -15927,48 +15913,14 @@
Provides: weakremover(python3-humanfriendly-test)
Provides: weakremover(python3-hypothesis-test)
Provides: weakremover(python3-ibus)
-Provides: weakremover(python3-ipdb)
Provides: weakremover(python3-jupyter-doc)
Provides: weakremover(python3-jupyter_Video_Widget)
-Provides: weakremover(python3-jupyter_altair-widgets)
-Provides: weakremover(python3-jupyter_bqplot)
-Provides: weakremover(python3-jupyter_calysto)
-Provides: weakremover(python3-jupyter_cms)
-Provides: weakremover(python3-jupyter_contrib_nbextensions)
-Provides: weakremover(python3-jupyter_dashboards)
-Provides: weakremover(python3-jupyter_full_width)
Provides: weakremover(python3-jupyter_hide_code)
Provides: weakremover(python3-jupyter_imatlab_kernel)
-Provides: weakremover(python3-jupyter_ipdb)
-Provides: weakremover(python3-jupyter_ipydatawidgets)
Provides: weakremover(python3-jupyter_ipydatawidgets_jupyterlab)
-Provides: weakremover(python3-jupyter_ipympl)
-Provides: weakremover(python3-jupyter_ipympl_jupyterlab)
-Provides: weakremover(python3-jupyter_ipyparallel)
-Provides: weakremover(python3-jupyter_ipyscales)
-Provides: weakremover(python3-jupyter_ipyscales_jupyterlab)
-Provides: weakremover(python3-jupyter_ipython-doc)
Provides: weakremover(python3-jupyter_ipywidgets-doc)
-Provides: weakremover(python3-jupyter_jgraph)
-Provides: weakremover(python3-jupyter_jupyterlab)
-Provides: weakremover(python3-jupyter_jupyterlab_discovery)
-Provides: weakremover(python3-jupyter_jupyterlab_github)
-Provides: weakremover(python3-jupyter_jupyterlab_latex)
-Provides: weakremover(python3-jupyter_jupyterlab_launcher)
-Provides: weakremover(python3-jupyter_jupyterlab_server)
-Provides: weakremover(python3-jupyter_jupyterlab_templates)
-Provides: weakremover(python3-jupyter_jupyterlab_widgets)
Provides: weakremover(python3-jupyter_matlab_kernel)
-Provides: weakremover(python3-jupyter_nbpresent)
-Provides: weakremover(python3-jupyter_nbsphinx)
-Provides: weakremover(python3-jupyter_nbsphinx_link)
-Provides: weakremover(python3-jupyter_qgrid)
-Provides: weakremover(python3-jupyter_rise)
Provides: weakremover(python3-jupyter_sphinx_theme)
-Provides: weakremover(python3-jupyter_themer)
-Provides: weakremover(python3-jupyter_vega)
-Provides: weakremover(python3-jupyter_watermark)
-Provides: weakremover(python3-jupyter_wysiwyg)
Provides: weakremover(python3-kde4-devel)
Provides: weakremover(python3-kde4-doc)
Provides: weakremover(python3-kde4-khtml)
@@ -15991,6 +15943,8 @@
Provides: weakremover(python3-numpy_1_15_4-gnu-hpc-devel)
Provides: weakremover(python3-numpy_1_16_1-gnu-hpc)
Provides: weakremover(python3-numpy_1_16_1-gnu-hpc-devel)
+Provides: weakremover(python3-numpy_1_16_2-gnu-hpc)
+Provides: weakremover(python3-numpy_1_16_2-gnu-hpc-devel)
Provides: weakremover(python3-oauth2client-django)
Provides: weakremover(python3-odict)
Provides: weakremover(python3-openvswitch-test)
@@ -20541,7 +20495,6 @@
Provides: weakremover(SUSEConnect)
Provides: weakremover(aegisub)
Provides: weakremover(amanda)
-Provides: weakremover(azure-cli-test)
Provides: weakremover(carla)
Provides: weakremover(carla-devel)
Provides: weakremover(carla-vst)
@@ -21164,8 +21117,8 @@
Provides: weakremover(python-talloc-32bit)
Provides: weakremover(python-tdb-32bit)
Provides: weakremover(python-tevent-32bit)
-Provides: weakremover(python2-scipy-gnu-hpc)
Provides: weakremover(python2-scipy_1_2_0-gnu-hpc)
+Provides: weakremover(python22-scipy-gnu-hpc)
Provides: weakremover(python3-96BoardsGPIO)
Provides: weakremover(python3-lldb4)
Provides: weakremover(python3-lldb5)
1
0
Hello community,
here is the log from the commit of package 000update-repos for openSUSE:Factory checked in at 2019-05-22 21:02:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000update-repos (Old)
and /work/SRC/openSUSE:Factory/.000update-repos.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000update-repos"
Wed May 22 21:02:13 2019 rev:265 rq: version:unknown
Wed May 22 21:02:09 2019 rev:264 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
New:
----
15.1:update_1558543248.packages.xz
factory:non-oss_1257.3.packages.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0
Hello community,
here is the log from the commit of package 000update-repos for openSUSE:Factory checked in at 2019-05-22 21:02:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000update-repos (Old)
and /work/SRC/openSUSE:Factory/.000update-repos.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000update-repos"
Wed May 22 21:02:05 2019 rev:263 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
New:
----
factory_20190521.packages.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0
Hello community,
here is the log from the commit of package python-moretools for openSUSE:Factory checked in at 2019-05-22 15:41:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-moretools (Old)
and /work/SRC/openSUSE:Factory/.python-moretools.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-moretools"
Wed May 22 15:41:38 2019 rev:3 rq:704736 version:0.1.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-moretools/python-moretools.changes 2018-12-24 11:39:55.357530337 +0100
+++ /work/SRC/openSUSE:Factory/.python-moretools.new.5148/python-moretools.changes 2019-05-22 15:42:24.654426956 +0200
@@ -1,0 +2,6 @@
+Wed May 22 05:50:29 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 0.1.9
+ * no upstream changelog
+
+-------------------------------------------------------------------
Old:
----
moretools-0.1.8.tar.gz
New:
----
moretools-0.1.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-moretools.spec ++++++
--- /var/tmp/diff_new_pack.XAgy6S/_old 2019-05-22 15:42:28.214426940 +0200
+++ /var/tmp/diff_new_pack.XAgy6S/_new 2019-05-22 15:42:28.218426940 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-moretools
#
-# Copyright (c) 2018 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
@@ -17,9 +17,8 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%bcond_without test
Name: python-moretools
-Version: 0.1.8
+Version: 0.1.9
Release: 0
Summary: MORE Overly Reusable Essentials for Python
License: LGPL-3.0-only
@@ -31,13 +30,14 @@
BuildRequires: %{python_module zetup >= 0.2.31}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-%if %{with test}
+# SECTION test requirements
BuildRequires: %{python_module decorator >= 4.0}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module six >= 1.10}
-%endif
+# /SECTION
Requires: python-decorator >= 4.0
Requires: python-six >= 1.10
+Requires: python-zetup >= 0.2.31
BuildArch: noarch
%python_subpackages
@@ -56,12 +56,8 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
-%if %{with test}
%check
-%{python_expand export PYTHONPATH=%{buildroot}%{$python_sitelib}
-py.test-%{$python_bin_suffix} test
-}
-%endif
+%pytest
%files %{python_files}
%defattr(-,root,root,-)
++++++ moretools-0.1.8.tar.gz -> moretools-0.1.9.tar.gz ++++++
++++ 1973 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-coveralls-check for openSUSE:Factory checked in at 2019-05-22 15:41:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-coveralls-check (Old)
and /work/SRC/openSUSE:Factory/.python-coveralls-check.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-coveralls-check"
Wed May 22 15:41:34 2019 rev:5 rq:704733 version:1.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-coveralls-check/python-coveralls-check.changes 2019-03-04 09:23:59.680561903 +0100
+++ /work/SRC/openSUSE:Factory/.python-coveralls-check.new.5148/python-coveralls-check.changes 2019-05-22 15:42:14.386427002 +0200
@@ -1,0 +2,7 @@
+Wed May 22 10:40:58 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 1.2.1
+ * Fix packaging and copyright.
+ * Add support for Coveralls parallel build stuff.
+
+-------------------------------------------------------------------
Old:
----
coveralls-check-1.1.0.tar.gz
New:
----
coveralls-check-1.2.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-coveralls-check.spec ++++++
--- /var/tmp/diff_new_pack.aloY2A/_old 2019-05-22 15:42:24.418426957 +0200
+++ /var/tmp/diff_new_pack.aloY2A/_new 2019-05-22 15:42:24.418426957 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-coveralls-check
-Version: 1.1.0
+Version: 1.2.1
Release: 0
Summary: Coverage checking using https://coveralls.io/
License: MIT
@@ -38,6 +38,7 @@
BuildRequires: fdupes
Requires: python-backoff
Requires: python-requests
+Requires: python-setuptools
BuildArch: noarch
%python_subpackages
++++++ coveralls-check-1.1.0.tar.gz -> coveralls-check-1.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coveralls-check-1.1.0/.travis.yml new/coveralls-check-1.2.1/.travis.yml
--- old/coveralls-check-1.1.0/.travis.yml 2017-09-14 09:45:40.000000000 +0200
+++ new/coveralls-check-1.2.1/.travis.yml 2018-07-11 09:48:59.000000000 +0200
@@ -3,6 +3,9 @@
# for container-y goodness:
sudo: false
+env:
+ secure: "r9ZM4KOnCohwd5xiXOCC4iTNWCrVJpEyN1wMPpaJTVentTnUs1pABw7CUgic0kYWbjC5BWh3kQBsXb1uQrxkwNWfBqmCuhBxSlxdd5mwVjF+jwnwq4R16pJ59l2NPThKirGw5xodLK/Sd5jw9eejToXx6Ak6ZHMzFan3A7DqmzXttx5mqmjmNujFIYRT19B7u6T06/cOWAOypajKJp2npHx5c2AXrd5+HdD4qfYwUBI1Rtj1GEKcQvDivOSOps3lXgr0Pwm6dH1VDegpvzlzcZ4KSVo6rvM7eImDuzgwloZlOuolqN7MCpKdTildnsYnTfErltb1oJlYkkkG0zMUMjA73owSTmXXpRoXfJpXuoxW8xwjG3K94uLRCB/ujFt/myHfUwJBw/OvnFOI2TAaS+B6MXgISjBNS6NXyJU+iM7K3zjOtzPO08yYy1he8gtX7sQ4k8wB0hPRImbbD9pPww7Oh6+vGyyTcGauy5R55fP2ZP0pj6VHAVqavQfRcUKxrcQ8fQBqV201wKgZJQgHe41+5K2NQlHV2toh32D3mzoT+GdRovSFnhJk/V3jXdblN7h2oEjVa7EGogwlbXtNoS3gikar9IVrw88wXuHwjujG7uB2yzBYiXG6tE2UJoliRXx0q0yImSnX2cWUXxIbuDvlj0U4FYYFNnY1BYU6N3Y="
+
python:
- "2.7"
- "3.6"
@@ -14,7 +17,7 @@
script: coverage run --source coveralls_check,tests -m py.test tests.py
after_success:
- - coveralls
+ - "COVERALLS_PARALLEL=true coveralls"
jobs:
include:
@@ -25,9 +28,10 @@
# woof woof!
install: "pip install -Ue ."
- script: "coveralls-check $TRAVIS_COMMIT"
+ script: "coveralls-check $TRAVIS_COMMIT --parallel-build-number $TRAVIS_BUILD_NUMBER --repo-token $COVERALLS_REPO_TOKEN"
- stage: release
+ if: tag IS present
python: 3.6
script: skip
# work around https://github.com/travis-ci/travis-ci/issues/8337:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coveralls-check-1.1.0/LICENSE.rst new/coveralls-check-1.2.1/LICENSE.rst
--- old/coveralls-check-1.1.0/LICENSE.rst 2017-09-14 09:45:40.000000000 +0200
+++ new/coveralls-check-1.2.1/LICENSE.rst 2018-07-11 09:48:59.000000000 +0200
@@ -2,7 +2,7 @@
License
=======
-Copyright (c) 2017 Chris Withers
+Copyright (c) 2017-2018 Chris Withers
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coveralls-check-1.1.0/PKG-INFO new/coveralls-check-1.2.1/PKG-INFO
--- old/coveralls-check-1.1.0/PKG-INFO 2017-09-14 09:46:05.000000000 +0200
+++ new/coveralls-check-1.2.1/PKG-INFO 2018-07-11 09:49:21.000000000 +0200
@@ -1,12 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: coveralls-check
-Version: 1.1.0
+Version: 1.2.1
Summary: Check coverage at https://coveralls.io
Home-page: https://github.com/cjw296/coverage-check
Author: Chris Withers
Author-email: chris(a)withers.org
License: MIT
-Description-Content-Type: UNKNOWN
Description: |Travis|_ |Coveralls|_
.. |Travis| image:: https://api.travis-ci.org/cjw296/coveralls-check.svg?branch=master
@@ -37,6 +36,9 @@
sudo: false
+ env:
+ secure: "..."
+
python:
- "2.7"
- "3.6"
@@ -48,7 +50,7 @@
script: coverage run --source ... -m py.test
after_success:
- - coveralls
+ - "COVERALLS_PARALLEL=true coveralls"
jobs:
include:
@@ -58,11 +60,25 @@
after_success: skip
install: "pip install -U coveralls-check"
- script: "coveralls-check $TRAVIS_COMMIT"
+ script: "coveralls-check $TRAVIS_COMMIT --parallel-build-number $TRAVIS_BUILD_NUMBER --repo-token $COVERALLS_REPO_TOKEN"
+
+ The ``COVERALLS_REPO_TOKEN`` is set in the ``secure`` section, which can be obtained using::
+
+ travis encrypt COVERALLS_REPO_TOKEN=(your coveralls repo token)
Changes
-------
+ 1.2.1 (11 Jul 2018)
+ -------------------
+
+ - Fix packaging and copyright.
+
+ 1.2.0 (11 Jul 2018)
+ -------------------
+
+ - Add support for Coveralls parallel build stuff.
+
1.1.0 (14 Sep 2017)
~~~~~~~~~~~~~~~~~~~
@@ -87,3 +103,5 @@
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
+Provides-Extra: test
+Provides-Extra: build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coveralls-check-1.1.0/README.rst new/coveralls-check-1.2.1/README.rst
--- old/coveralls-check-1.1.0/README.rst 2017-09-14 09:45:40.000000000 +0200
+++ new/coveralls-check-1.2.1/README.rst 2018-07-11 09:48:59.000000000 +0200
@@ -28,6 +28,9 @@
sudo: false
+ env:
+ secure: "..."
+
python:
- "2.7"
- "3.6"
@@ -39,7 +42,7 @@
script: coverage run --source ... -m py.test
after_success:
- - coveralls
+ - "COVERALLS_PARALLEL=true coveralls"
jobs:
include:
@@ -49,11 +52,25 @@
after_success: skip
install: "pip install -U coveralls-check"
- script: "coveralls-check $TRAVIS_COMMIT"
+ script: "coveralls-check $TRAVIS_COMMIT --parallel-build-number $TRAVIS_BUILD_NUMBER --repo-token $COVERALLS_REPO_TOKEN"
+
+The ``COVERALLS_REPO_TOKEN`` is set in the ``secure`` section, which can be obtained using::
+
+ travis encrypt COVERALLS_REPO_TOKEN=(your coveralls repo token)
Changes
-------
+1.2.1 (11 Jul 2018)
+-------------------
+
+- Fix packaging and copyright.
+
+1.2.0 (11 Jul 2018)
+-------------------
+
+- Add support for Coveralls parallel build stuff.
+
1.1.0 (14 Sep 2017)
~~~~~~~~~~~~~~~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coveralls-check-1.1.0/coveralls_check.egg-info/PKG-INFO new/coveralls-check-1.2.1/coveralls_check.egg-info/PKG-INFO
--- old/coveralls-check-1.1.0/coveralls_check.egg-info/PKG-INFO 2017-09-14 09:46:05.000000000 +0200
+++ new/coveralls-check-1.2.1/coveralls_check.egg-info/PKG-INFO 2018-07-11 09:49:21.000000000 +0200
@@ -1,12 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: coveralls-check
-Version: 1.1.0
+Version: 1.2.1
Summary: Check coverage at https://coveralls.io
Home-page: https://github.com/cjw296/coverage-check
Author: Chris Withers
Author-email: chris(a)withers.org
License: MIT
-Description-Content-Type: UNKNOWN
Description: |Travis|_ |Coveralls|_
.. |Travis| image:: https://api.travis-ci.org/cjw296/coveralls-check.svg?branch=master
@@ -37,6 +36,9 @@
sudo: false
+ env:
+ secure: "..."
+
python:
- "2.7"
- "3.6"
@@ -48,7 +50,7 @@
script: coverage run --source ... -m py.test
after_success:
- - coveralls
+ - "COVERALLS_PARALLEL=true coveralls"
jobs:
include:
@@ -58,11 +60,25 @@
after_success: skip
install: "pip install -U coveralls-check"
- script: "coveralls-check $TRAVIS_COMMIT"
+ script: "coveralls-check $TRAVIS_COMMIT --parallel-build-number $TRAVIS_BUILD_NUMBER --repo-token $COVERALLS_REPO_TOKEN"
+
+ The ``COVERALLS_REPO_TOKEN`` is set in the ``secure`` section, which can be obtained using::
+
+ travis encrypt COVERALLS_REPO_TOKEN=(your coveralls repo token)
Changes
-------
+ 1.2.1 (11 Jul 2018)
+ -------------------
+
+ - Fix packaging and copyright.
+
+ 1.2.0 (11 Jul 2018)
+ -------------------
+
+ - Add support for Coveralls parallel build stuff.
+
1.1.0 (14 Sep 2017)
~~~~~~~~~~~~~~~~~~~
@@ -87,3 +103,5 @@
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
+Provides-Extra: test
+Provides-Extra: build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coveralls-check-1.1.0/coveralls_check.py new/coveralls-check-1.2.1/coveralls_check.py
--- old/coveralls-check-1.1.0/coveralls_check.py 2017-09-14 09:45:40.000000000 +0200
+++ new/coveralls-check-1.2.1/coveralls_check.py 2018-07-11 09:48:59.000000000 +0200
@@ -7,7 +7,8 @@
import requests
import sys
-url = 'https://coveralls.io/builds/{}.json'
+POLL_URL = 'https://coveralls.io/builds/{}.json'
+DONE_URL = 'https://coveralls.io/webhook'
def setup_logging():
@@ -23,7 +24,7 @@
def get_coverage(commit):
- response = requests.get(url.format(commit))
+ response = requests.get(POLL_URL.format(commit))
data = response.json()
return data['covered_percent']
@@ -37,6 +38,29 @@
)(func)
+def ensure_parallel_done(args):
+ if args.parallel_build_number:
+ response = requests.post(
+ DONE_URL,
+ params={'repo_token': args.repo_token},
+ json={
+ "payload": {
+ "build_num": args.parallel_build_number,
+ "status": "done"
+ }
+ }
+ )
+ if response.status_code == 200:
+ print('Confirmed end of parallel build')
+ else:
+ print(
+ 'Attempt to confirmed end of parallel build got {}:\n{}'.format(
+ response.status_code, response.content
+ )
+ )
+ sys.exit(1)
+
+
def parse_args():
parser = ArgumentParser()
parser.add_argument('commit', help='the commit hash to check')
@@ -46,12 +70,22 @@
parser.add_argument('--max-wait', type=int, default=5,
help='Maximum time, in minutes, to wait for Coveralls '
'data. Defaults to 5.')
+ parser.add_argument('--parallel-build-number', type=int,
+ help='The build number, eg $TRAVIS_BUILD_NUMBER.')
+ parser.add_argument('--repo-token',
+ help='Required if --parallel-build-number is used and '
+ 'should be the token use when POSTing back to '
+ 'coveralls to mark the parallel build as done. '
+ 'Should come from a secret.')
return parser.parse_args()
def main():
args = parse_args()
setup_logging()
+
+ ensure_parallel_done(args)
+
get_coverage_ = decorate(get_coverage, args)
covered = get_coverage_(args.commit)
if covered is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coveralls-check-1.1.0/setup.py new/coveralls-check-1.2.1/setup.py
--- old/coveralls-check-1.1.0/setup.py 2017-09-14 09:45:40.000000000 +0200
+++ new/coveralls-check-1.2.1/setup.py 2018-07-11 09:48:59.000000000 +0200
@@ -1,5 +1,5 @@
# See LICENSE.rst for license details.
-# Copyright (c) 2017 Chris Withers
+# Copyright (c) 2017-2018 Chris Withers
import os
@@ -7,7 +7,7 @@
setup(
name='coveralls-check',
- version='1.1.0',
+ version='1.2.1',
author='Chris Withers',
author_email='chris(a)withers.org',
license='MIT',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coveralls-check-1.1.0/tests.py new/coveralls-check-1.2.1/tests.py
--- old/coveralls-check-1.1.0/tests.py 2017-09-14 09:45:40.000000000 +0200
+++ new/coveralls-check-1.2.1/tests.py 2018-07-11 09:48:59.000000000 +0200
@@ -1,8 +1,17 @@
+import json
+import sys
+
import pytest
-from coveralls_check import main
from mock import Mock
from responses import RequestsMock
-from testfixtures import replace, ShouldRaise, OutputCapture, Replacer, compare
+from testfixtures import ShouldRaise, OutputCapture, Replacer, compare
+
+from coveralls_check import main
+
+if sys.version_info[0] == 2:
+ PY2 = True
+else:
+ PY2 = False
SAMPLE_JSON = {
"commit_sha": "xyz",
@@ -10,7 +19,6 @@
"covered_percent": 99.38
}
-
@pytest.fixture(autouse=True)
def responses():
with RequestsMock() as responses:
@@ -59,3 +67,41 @@
'No coverage information available for xyz\n'
)
output.compare(expected)
+
+
+def test_parallel_build(responses, mocks):
+ responses.add(responses.POST, 'https://coveralls.io/webhook',
+ json={"mock": 'ok'})
+ responses.add(responses.GET, 'https://coveralls.io/builds/xyz.json',
+ json={"covered_percent": 100})
+ mocks.argv.extend(['--parallel-build-number', '99', '--repo-token', 'thetoken'])
+ with OutputCapture() as output:
+ main()
+ output.compare('Confirmed end of parallel build\n'
+ 'Coverage OK for xyz as 100 >= 100')
+ post = responses.calls[0].request
+ compare(post.url,
+ expected='https://coveralls.io/webhook?repo_token=thetoken')
+ compare(json.loads(post.body),
+ expected={"payload": {"build_num": 99, "status": "done"}})
+
+
+def test_parallel_build_bad_response(responses, mocks):
+ responses.add(responses.POST, 'https://coveralls.io/webhook',
+ json={"mock": 'uh oh'},
+ status=500)
+ mocks.argv.extend(['--parallel-build-number', '99', '--repo-token', 'thetoken'])
+ with ShouldRaise(SystemExit(1)):
+ with OutputCapture() as output:
+ main()
+ if PY2:
+ expected=(
+ 'Attempt to confirmed end of parallel build got 500:\n'
+ '{"mock": "uh oh"}'
+ )
+ else:
+ expected=(
+ 'Attempt to confirmed end of parallel build got 500:\n'
+ 'b\'{"mock": "uh oh"}\''
+ )
+ output.compare(expected)
1
0
Hello community,
here is the log from the commit of package python-imread for openSUSE:Factory checked in at 2019-05-22 15:41:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-imread (Old)
and /work/SRC/openSUSE:Factory/.python-imread.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-imread"
Wed May 22 15:41:30 2019 rev:2 rq:704732 version:0.7.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-imread/python-imread.changes 2018-05-11 14:28:47.578962966 +0200
+++ /work/SRC/openSUSE:Factory/.python-imread.new.5148/python-imread.changes 2019-05-22 15:42:12.858427008 +0200
@@ -1,0 +2,7 @@
+Wed May 22 10:57:59 UTC 2019 - pgajdos(a)suse.com
+
+- version update from 0.6.1 to 0.7.1
+ * Fix 16-bit RGB/RGBA TIFF write
+ * Support reading ImageJ ROIs
+
+-------------------------------------------------------------------
Old:
----
imread-0.6.1.tar.gz
New:
----
imread-0.7.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-imread.spec ++++++
--- /var/tmp/diff_new_pack.LLKtzm/_old 2019-05-22 15:42:14.158427003 +0200
+++ /var/tmp/diff_new_pack.LLKtzm/_new 2019-05-22 15:42:14.158427003 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-imread
#
-# Copyright (c) 2018 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,14 +12,13 @@
# 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/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%bcond_without test
Name: python-imread
-Version: 0.6.1
+Version: 0.7.1
Release: 0
Summary: Image reading library
License: MIT
@@ -37,9 +36,9 @@
BuildRequires: pkgconfig(libjpeg)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libwebp)
-%if %{with test}
+# SECTION test requirements
BuildRequires: %{python_module nose}
-%endif
+# /SECTION
BuildRequires: python-numpy
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%python_subpackages
@@ -67,10 +66,8 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitearch}
-%if %{with test}
%check
%python_exec setup.py test
-%endif
%files %{python_files}
%defattr(-,root,root,-)
++++++ imread-0.6.1.tar.gz -> imread-0.7.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/ChangeLog new/imread-0.7.1/ChangeLog
--- old/imread-0.6.1/ChangeLog 2018-02-15 14:50:22.000000000 +0100
+++ new/imread-0.7.1/ChangeLog 2019-05-09 06:53:41.000000000 +0200
@@ -1,3 +1,9 @@
+Version 0.7.1 2019-05-09 by luispedro
+ * Fix 16-bit RGB/RGBA TIFF write (patch by Tomi Aarnio)
+
+Version 0.7.0 2018-09-30 by luispedro
+ * Support reading ImageJ ROIs
+
Version 0.6.1 2018-02-15 by luispedro
* Support pathlib paths as function arguments
* Fix 16 bit PNG write support (patch by Tomi Aarnio)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/PKG-INFO new/imread-0.7.1/PKG-INFO
--- old/imread-0.6.1/PKG-INFO 2018-02-15 18:24:28.000000000 +0100
+++ new/imread-0.7.1/PKG-INFO 2019-05-09 07:14:42.000000000 +0200
@@ -1,18 +1,26 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: imread
-Version: 0.6.1
+Version: 0.7.1
Summary: imread: Image reading library
Home-page: http://luispedro.org/software/imread
Author: Luis Pedro Coelho
Author-email: luis(a)luispedro.org
License: MIT
-Description-Content-Type: UNKNOWN
Description: ================================
mahotas-imread: Read Image Files
================================
- [![Travis](https://api.travis-ci.org/luispedro/imread.png)](https://travis-ci.org/luispedro/imread)
- [![License](https://pypip.in/license/imread/badge.png)](http://opensource.org/licenses/MIT)
+ .. image:: https://api.travis-ci.org/luispedro/imread.png
+ :target: https://travis-ci.org/luispedro/imread
+ .. image:: https://anaconda.org/conda-forge/imread/badges/license.svg
+ :target: http://opensource.org/licenses/MIT
+ .. image:: https://anaconda.org/conda-forge/imread/badges/installer/conda.svg
+ :target: https://anaconda.org/conda-forge/imread
+ .. image:: https://anaconda.org/conda-forge/imread/badges/downloads.svg
+ :target: https://anaconda.org/conda-forge/imread
+
+ IO with images and numpy arrays.
+
Mahotas-imread is a simple module with a small number of functions:
@@ -46,6 +54,12 @@
`Online documentation <http://imread.rtfd.io/>`__
+ Python versions 2.6, 2.7, 3.3+ are officially supported.
+
+ Python 3.2 (and earlier versions in the Python 3 series) are officially **not
+ supported**. Patches will be accepted if they do not mess up anything else, but
+ bug reports will not be considered as very high priority.
+
Citation
--------
@@ -123,20 +137,17 @@
<https://twitter.com/luispedrocoelho>`__ or `github
<https://github.com/luispedro>`__).
- Travis Build Status
- ~~~~~~~~~~~~~~~~~~~
-
- .. image:: https://travis-ci.org/luispedro/imread.png
- :target: https://travis-ci.org/luispedro/imread
+ History
+ ~~~~~~~
- Python versions 2.6, 2.7, 3.3+ are officially supported.
+ Version 0.7.1 (2019-05-09)
+ --------------------------
+ - Fix 16-bit RGB/RGBA TIFF write (patch by Tomi Aarnio)
- Python 3.2 (and earlier versions in the Python 3 series) are officially **not
- supported**. Patches will be accepted if they do not mess up anything else, but
- bug reports will not be considered as very high priority.
+ Version 0.7.0 (2018-09-30)
+ --------------------------
+ - Add support for reading ImageJ ROIs
- History
- ~~~~~~~
Version 0.6.1 (2018-02-15)
--------------------------
@@ -255,6 +266,14 @@
Classifier: Topic :: Scientific/Engineering :: Image Recognition
Classifier: Topic :: Software Development :: Libraries
Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: C++
Classifier: License :: OSI Approved :: MIT License
+Description-Content-Type: text/x-rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/README.rst new/imread-0.7.1/README.rst
--- old/imread-0.6.1/README.rst 2018-02-15 14:50:33.000000000 +0100
+++ new/imread-0.7.1/README.rst 2019-05-09 07:00:05.000000000 +0200
@@ -2,8 +2,17 @@
mahotas-imread: Read Image Files
================================
-[![Travis](https://api.travis-ci.org/luispedro/imread.png)](https://travis-ci.org/luispedro/imread)
-[![License](https://pypip.in/license/imread/badge.png)](http://opensource.org/licenses/MIT)
+.. image:: https://api.travis-ci.org/luispedro/imread.png
+ :target: https://travis-ci.org/luispedro/imread
+.. image:: https://anaconda.org/conda-forge/imread/badges/license.svg
+ :target: http://opensource.org/licenses/MIT
+.. image:: https://anaconda.org/conda-forge/imread/badges/installer/conda.svg
+ :target: https://anaconda.org/conda-forge/imread
+.. image:: https://anaconda.org/conda-forge/imread/badges/downloads.svg
+ :target: https://anaconda.org/conda-forge/imread
+
+IO with images and numpy arrays.
+
Mahotas-imread is a simple module with a small number of functions:
@@ -37,6 +46,12 @@
`Online documentation <http://imread.rtfd.io/>`__
+Python versions 2.6, 2.7, 3.3+ are officially supported.
+
+Python 3.2 (and earlier versions in the Python 3 series) are officially **not
+supported**. Patches will be accepted if they do not mess up anything else, but
+bug reports will not be considered as very high priority.
+
Citation
--------
@@ -114,20 +129,17 @@
<https://twitter.com/luispedrocoelho>`__ or `github
<https://github.com/luispedro>`__).
-Travis Build Status
-~~~~~~~~~~~~~~~~~~~
-
-.. image:: https://travis-ci.org/luispedro/imread.png
- :target: https://travis-ci.org/luispedro/imread
+History
+~~~~~~~
-Python versions 2.6, 2.7, 3.3+ are officially supported.
+Version 0.7.1 (2019-05-09)
+--------------------------
+- Fix 16-bit RGB/RGBA TIFF write (patch by Tomi Aarnio)
-Python 3.2 (and earlier versions in the Python 3 series) are officially **not
-supported**. Patches will be accepted if they do not mess up anything else, but
-bug reports will not be considered as very high priority.
+Version 0.7.0 (2018-09-30)
+--------------------------
+- Add support for reading ImageJ ROIs
-History
-~~~~~~~
Version 0.6.1 (2018-02-15)
--------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/docs/source/history.rst new/imread-0.7.1/docs/source/history.rst
--- old/imread-0.6.1/docs/source/history.rst 2018-02-15 14:50:33.000000000 +0100
+++ new/imread-0.7.1/docs/source/history.rst 2019-05-09 06:54:29.000000000 +0200
@@ -2,6 +2,14 @@
History
=======
+Version 0.7.1 (2019-05-09)
+--------------------------
+- Fix 16-bit RGB/RGBA TIFF write (patch by Tomi Aarnio)
+
+Version 0.7.0 (2018-09-30)
+--------------------------
+- Add support for reading ImageJ ROIs
+
Version 0.6.1 (2018-02-15)
--------------------------
- Support pathlib paths as function arguments
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/imread/ijrois.py new/imread-0.7.1/imread/ijrois.py
--- old/imread-0.6.1/imread/ijrois.py 1970-01-01 01:00:00.000000000 +0100
+++ new/imread-0.7.1/imread/ijrois.py 2018-09-22 13:37:14.000000000 +0200
@@ -0,0 +1,132 @@
+# Copyright: Luis Pedro Coelho <luis(a)luispedro.org>, 2012-2018
+# License: MIT
+import numpy as np
+
+def read_roi(fileobj):
+ '''
+ points = read_roi(fileobj)
+
+ Read ImageJ's ROI format
+
+ Parameters
+ ----------
+ fileobj: should be a file-like object
+
+ Returns
+ -------
+
+ points: a list of points
+ '''
+# This is based on:
+# http://rsbweb.nih.gov/ij/developer/source/ij/io/RoiDecoder.java.html
+# http://rsbweb.nih.gov/ij/developer/source/ij/io/RoiEncoder.java.html
+
+
+ SPLINE_FIT = 1
+ DOUBLE_HEADED = 2
+ OUTLINE = 4
+ OVERLAY_LABELS = 8
+ OVERLAY_NAMES = 16
+ OVERLAY_BACKGROUNDS = 32
+ OVERLAY_BOLD = 64
+ SUB_PIXEL_RESOLUTION = 128
+ DRAW_OFFSET = 256
+
+
+ pos = [4]
+ def get8():
+ pos[0] += 1
+ s = fileobj.read(1)
+ if not s:
+ raise IOError('readroi: Unexpected EOF')
+ return ord(s)
+
+ def get16():
+ b0 = get8()
+ b1 = get8()
+ return (b0 << 8) | b1
+
+ def get32():
+ s0 = get16()
+ s1 = get16()
+ return (s0 << 16) | s1
+
+ def getfloat():
+ v = np.int32(get32())
+ return v.view(np.float32)
+
+ magic = fileobj.read(4)
+ if magic != b'Iout':
+ raise IOError('Magic number not found')
+ version = get16()
+
+ # It seems that the roi type field occupies 2 Bytes, but only one is used
+ roi_type = get8()
+ # Discard second Byte:
+ get8()
+
+ if not (0 <= roi_type < 11):
+ raise ValueError('roireader: ROI type %s not supported' % roi_type)
+
+ if roi_type != 7:
+ raise ValueError('roireader: ROI type %s not supported (!= 7)' % roi_type)
+
+ top = get16()
+ left = get16()
+ bottom = get16()
+ right = get16()
+ n_coordinates = get16()
+
+ x1 = getfloat()
+ y1 = getfloat()
+ x2 = getfloat()
+ y2 = getfloat()
+ stroke_width = get16()
+ shape_roi_size = get32()
+ stroke_color = get32()
+ fill_color = get32()
+ subtype = get16()
+ if subtype != 0:
+ raise ValueError('roireader: ROI subtype {} not supported (!= 0)'.format(subtype))
+ options = get16()
+ arrow_style = get8()
+ arrow_head_size = get8()
+ rect_arc_size = get16()
+ position = get32()
+ header2offset = get32()
+
+ if options & SUB_PIXEL_RESOLUTION:
+ getc = getfloat
+ points = np.empty((n_coordinates, 2), dtype=np.float32)
+ else:
+ getc = get16
+ points = np.empty((n_coordinates, 2), dtype=np.int16)
+ points[:,1] = [getc() for i in range(n_coordinates)]
+ points[:,0] = [getc() for i in range(n_coordinates)]
+ points[:,1] += left
+ points[:,0] += top
+ points -= 1
+ return points
+
+def read_roi_zip(fname):
+ '''
+ Reads all ROIs in a ZIP file
+
+ Parameters
+ ----------
+ fname : str
+ Input filename
+
+ Returns
+ -------
+ rois: list of ROIs
+ Each ROI is a vector of 2D points
+
+ See Also
+ --------
+ read_roi: function, reads a single ROI
+ '''
+ import zipfile
+ with zipfile.ZipFile(fname) as zf:
+ return [read_roi(zf.open(n))
+ for n in zf.namelist()]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/imread/imread_version.py new/imread-0.7.1/imread/imread_version.py
--- old/imread-0.6.1/imread/imread_version.py 2018-02-15 14:49:56.000000000 +0100
+++ new/imread-0.7.1/imread/imread_version.py 2019-05-09 06:53:57.000000000 +0200
@@ -1 +1 @@
-__version__ = '0.6.1'
+__version__ = '0.7.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/imread/lib/_tiff.cpp new/imread-0.7.1/imread/lib/_tiff.cpp
--- old/imread-0.6.1/imread/lib/_tiff.cpp 2016-03-14 00:30:38.000000000 +0100
+++ new/imread-0.7.1/imread/lib/_tiff.cpp 2019-05-09 06:52:45.000000000 +0200
@@ -316,6 +316,7 @@
void* bufp = 0;
bool copy_data = false;
const uint32 h = im->dim(0);
+ const uint32 nchannels = uint16(im->dim_or(2, 1));
const uint16 photometric = ((im->ndims() == 3 && im->dim(2)) ?
PHOTOMETRIC_RGB :
PHOTOMETRIC_MINISBLACK);
@@ -336,7 +337,7 @@
if (get_optional_bool(opts, "tiff:horizontal-predictor", prediction_default)) {
TIFFSetField(t.tif, TIFFTAG_PREDICTOR, PREDICTOR_HORIZONTAL);
if (!copy_data) {
- bufdata.resize(im->dim(1) * im->nbytes());
+ bufdata.resize(im->dim(1) * im->nbytes() * nchannels);
bufp = &bufdata[0];
copy_data = true;
}
@@ -385,7 +386,7 @@
for (uint32 r = 0; r != h; ++r) {
void* rowp = im->rowp(r);
if (copy_data) {
- std::memcpy(bufp, rowp, im->dim(1) * im->nbytes());
+ std::memcpy(bufp, rowp, im->dim(1) * im->nbytes() * nchannels);
rowp = bufp;
}
if (TIFFWriteScanline(t.tif, rowp, r) == -1) {
@@ -400,4 +401,3 @@
}
TIFFFlush(t.tif);
}
-
Binary files old/imread-0.6.1/imread/tests/data/0186-0099.roi and new/imread-0.7.1/imread/tests/data/0186-0099.roi differ
Binary files old/imread-0.6.1/imread/tests/data/rois.zip and new/imread-0.7.1/imread/tests/data/rois.zip differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/imread/tests/test_rois.py new/imread-0.7.1/imread/tests/test_rois.py
--- old/imread-0.6.1/imread/tests/test_rois.py 1970-01-01 01:00:00.000000000 +0100
+++ new/imread-0.7.1/imread/tests/test_rois.py 2018-09-22 13:44:02.000000000 +0200
@@ -0,0 +1,11 @@
+import numpy as np
+from imread import ijrois
+
+from . import file_path
+
+
+def test_rois_smoke():
+ rois = ijrois.read_roi_zip('./imread/tests/data/rois.zip')
+ assert len(rois) == 4
+ r = ijrois.read_roi(open('./imread/tests/data/0186-0099.roi', 'rb'))
+ assert any([np.array_equal(ri, r) for ri in rois])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/imread/tests/test_tiff.py new/imread-0.7.1/imread/tests/test_tiff.py
--- old/imread-0.6.1/imread/tests/test_tiff.py 2016-03-14 00:30:38.000000000 +0100
+++ new/imread-0.7.1/imread/tests/test_tiff.py 2019-05-03 17:35:10.000000000 +0200
@@ -67,6 +67,15 @@
assert np.all(im == im2)
@with_setup(teardown=_remove_file)
+def test_read_back_colour_16bit():
+ im = np.random.random((16,8,3)) * 65535.0
+ im = im.astype(np.uint16)
+ imsave(_filename, im)
+ im2 = imread(_filename)
+ assert im.shape == im2.shape
+ assert np.all(im == im2)
+
+@with_setup(teardown=_remove_file)
def test_horizontal_predictor():
im = imread(file_path('arange512_16bit.png'))
im2 = im.copy()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/imread.egg-info/PKG-INFO new/imread-0.7.1/imread.egg-info/PKG-INFO
--- old/imread-0.6.1/imread.egg-info/PKG-INFO 2018-02-15 18:24:28.000000000 +0100
+++ new/imread-0.7.1/imread.egg-info/PKG-INFO 2019-05-09 07:14:42.000000000 +0200
@@ -1,18 +1,26 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: imread
-Version: 0.6.1
+Version: 0.7.1
Summary: imread: Image reading library
Home-page: http://luispedro.org/software/imread
Author: Luis Pedro Coelho
Author-email: luis(a)luispedro.org
License: MIT
-Description-Content-Type: UNKNOWN
Description: ================================
mahotas-imread: Read Image Files
================================
- [![Travis](https://api.travis-ci.org/luispedro/imread.png)](https://travis-ci.org/luispedro/imread)
- [![License](https://pypip.in/license/imread/badge.png)](http://opensource.org/licenses/MIT)
+ .. image:: https://api.travis-ci.org/luispedro/imread.png
+ :target: https://travis-ci.org/luispedro/imread
+ .. image:: https://anaconda.org/conda-forge/imread/badges/license.svg
+ :target: http://opensource.org/licenses/MIT
+ .. image:: https://anaconda.org/conda-forge/imread/badges/installer/conda.svg
+ :target: https://anaconda.org/conda-forge/imread
+ .. image:: https://anaconda.org/conda-forge/imread/badges/downloads.svg
+ :target: https://anaconda.org/conda-forge/imread
+
+ IO with images and numpy arrays.
+
Mahotas-imread is a simple module with a small number of functions:
@@ -46,6 +54,12 @@
`Online documentation <http://imread.rtfd.io/>`__
+ Python versions 2.6, 2.7, 3.3+ are officially supported.
+
+ Python 3.2 (and earlier versions in the Python 3 series) are officially **not
+ supported**. Patches will be accepted if they do not mess up anything else, but
+ bug reports will not be considered as very high priority.
+
Citation
--------
@@ -123,20 +137,17 @@
<https://twitter.com/luispedrocoelho>`__ or `github
<https://github.com/luispedro>`__).
- Travis Build Status
- ~~~~~~~~~~~~~~~~~~~
-
- .. image:: https://travis-ci.org/luispedro/imread.png
- :target: https://travis-ci.org/luispedro/imread
+ History
+ ~~~~~~~
- Python versions 2.6, 2.7, 3.3+ are officially supported.
+ Version 0.7.1 (2019-05-09)
+ --------------------------
+ - Fix 16-bit RGB/RGBA TIFF write (patch by Tomi Aarnio)
- Python 3.2 (and earlier versions in the Python 3 series) are officially **not
- supported**. Patches will be accepted if they do not mess up anything else, but
- bug reports will not be considered as very high priority.
+ Version 0.7.0 (2018-09-30)
+ --------------------------
+ - Add support for reading ImageJ ROIs
- History
- ~~~~~~~
Version 0.6.1 (2018-02-15)
--------------------------
@@ -255,6 +266,14 @@
Classifier: Topic :: Scientific/Engineering :: Image Recognition
Classifier: Topic :: Software Development :: Libraries
Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: C++
Classifier: License :: OSI Approved :: MIT License
+Description-Content-Type: text/x-rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/imread.egg-info/SOURCES.txt new/imread-0.7.1/imread.egg-info/SOURCES.txt
--- old/imread-0.6.1/imread.egg-info/SOURCES.txt 2018-02-15 18:24:28.000000000 +0100
+++ new/imread-0.7.1/imread.egg-info/SOURCES.txt 2019-05-09 07:14:42.000000000 +0200
@@ -11,6 +11,7 @@
docs/source/readme.rst
imread/__init__.py
imread/_imread.cpp
+imread/ijrois.py
imread/imread.py
imread/imread_version.py
imread/special.py
@@ -50,9 +51,11 @@
imread/tests/test_imsave.py
imread/tests/test_jpeg.py
imread/tests/test_png.py
+imread/tests/test_rois.py
imread/tests/test_tiff.py
imread/tests/test_webp.py
imread/tests/test_xcf.py
+imread/tests/data/0186-0099.roi
imread/tests/data/1_webp_a.webp
imread/tests/data/GOOD.PNG
imread/tests/data/arange512_16bit.png
@@ -70,5 +73,6 @@
imread/tests/data/palette_zero.png
imread/tests/data/py-installer-indexed.bmp
imread/tests/data/rgba.png
+imread/tests/data/rois.zip
imread/tests/data/stack.tiff
imread/tests/data/star1.bmp
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imread-0.6.1/setup.py new/imread-0.7.1/setup.py
--- old/imread-0.6.1/setup.py 2017-06-17 11:34:19.000000000 +0200
+++ new/imread-0.7.1/setup.py 2019-05-09 06:59:09.000000000 +0200
@@ -4,6 +4,7 @@
# License: MIT
from __future__ import division, print_function
+import platform
import sys
try:
@@ -84,6 +85,11 @@
extensions['imread._imread'].append('imread/lib/_webp.cpp')
libraries.append('webp')
+extra_args = []
+if platform.platform().startswith('Darwin'):
+ if int(platform.mac_ver()[0].split('.')[1]) >= 9:
+ extra_args.append('-stdlib=libc++')
+
ext_modules = [
setuptools.Extension(
key,
@@ -93,6 +99,8 @@
sources=sources,
undef_macros=undef_macros,
define_macros=define_macros,
+ extra_compile_args=extra_args,
+ extra_link_args=extra_args,
) for key, sources in extensions.items()]
packages = setuptools.find_packages()
@@ -112,7 +120,14 @@
'Topic :: Scientific/Engineering :: Image Recognition',
'Topic :: Software Development :: Libraries',
'Programming Language :: Python',
+'Programming Language :: Python :: 2',
+'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
+'Programming Language :: Python :: 3.3',
+'Programming Language :: Python :: 3.4',
+'Programming Language :: Python :: 3.5',
+'Programming Language :: Python :: 3.6',
+'Programming Language :: Python :: 3.7',
'Programming Language :: C++',
'License :: OSI Approved :: MIT License',
]
@@ -121,6 +136,7 @@
version = __version__,
description = 'imread: Image reading library',
long_description = long_description,
+ long_description_content_type = 'text/x-rst',
author = 'Luis Pedro Coelho',
author_email = 'luis(a)luispedro.org',
license = 'MIT',
1
0
Hello community,
here is the log from the commit of package cloud-netconfig for openSUSE:Factory checked in at 2019-05-22 15:41:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cloud-netconfig (Old)
and /work/SRC/openSUSE:Factory/.cloud-netconfig.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cloud-netconfig"
Wed May 22 15:41:24 2019 rev:8 rq:704720 version:1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/cloud-netconfig/cloud-netconfig.changes 2019-02-04 14:25:11.797059887 +0100
+++ /work/SRC/openSUSE:Factory/.cloud-netconfig.new.5148/cloud-netconfig.changes 2019-05-22 15:42:10.086427021 +0200
@@ -1,0 +2,7 @@
+Thu May 16 13:32:26 UTC 2019 - Joachim Gleissner <jgleissner(a)suse.com>
+
+- Update to version 1.0:
+ + pause and retry if API call throttling is detected in Azure
+ (bsc#1135257 bsc#1135263)
+
+-------------------------------------------------------------------
Old:
----
cloud-netconfig-0.9.tar.bz2
New:
----
cloud-netconfig-1.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cloud-netconfig.spec ++++++
--- /var/tmp/diff_new_pack.C3DDSj/_old 2019-05-22 15:42:11.994427012 +0200
+++ /var/tmp/diff_new_pack.C3DDSj/_new 2019-05-22 15:42:12.022427012 +0200
@@ -33,7 +33,7 @@
%endif
Name: %{base_name}%{flavor_suffix}
-Version: 0.9
+Version: 1.0
Release: 0
Summary: Network configuration scripts for %{csp_string}
License: GPL-3.0-or-later
++++++ cloud-netconfig-0.9.tar.bz2 -> cloud-netconfig-1.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/.git/COMMIT_EDITMSG new/cloud-netconfig-1.0/.git/COMMIT_EDITMSG
--- old/cloud-netconfig-0.9/.git/COMMIT_EDITMSG 2019-01-30 16:53:11.210751715 +0100
+++ new/cloud-netconfig-1.0/.git/COMMIT_EDITMSG 2019-05-15 22:18:31.591315910 +0200
@@ -1,16 +1,19 @@
-run cloud-netconfig periodically (bsc#1118783 bsc#1122013)
+slow API requests down if necessary
-Install sytstemd timer that runs cloud-netconfig every minute.
+If an instance has many IP addresses (about 40+) repeated requests to the
+metadata server may be denied in Azure. This change makes cloud-netconfig slow
+down when this situation is detected. [bsc#1135257 bsc#1135263]
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
-# On branch fixes
+# On branch fix-azure-throttle
# Changes to be committed:
-# modified: Makefile
# modified: VERSION
+# modified: azure/functions.cloud-netconfig
# modified: cloud-netconfig-azure.spec
# modified: cloud-netconfig-ec2.spec
# modified: cloud-netconfig.spec
-# new file: systemd/cloud-netconfig.service
-# new file: systemd/cloud-netconfig.timer
+#
+# Untracked files:
+# cloud-netconfig-0.9.tar.bz2
#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/.git/FETCH_HEAD new/cloud-netconfig-1.0/.git/FETCH_HEAD
--- old/cloud-netconfig-0.9/.git/FETCH_HEAD 2019-01-31 14:11:27.871295487 +0100
+++ new/cloud-netconfig-1.0/.git/FETCH_HEAD 2019-05-15 22:09:32.234241555 +0200
@@ -1,2 +1 @@
737eef55e55d7dfc91c693d4863c1ac0191d7481 branch 'master' of github.com:SUSE-Enceladus/cloud-netconfig
-c706e96b9c508b7df831ed7d5c41e689372d357e not-for-merge branch 'fixes' of github.com:SUSE-Enceladus/cloud-netconfig
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/.git/HEAD new/cloud-netconfig-1.0/.git/HEAD
--- old/cloud-netconfig-0.9/.git/HEAD 2019-01-31 14:11:23.071252410 +0100
+++ new/cloud-netconfig-1.0/.git/HEAD 2019-05-15 22:09:54.642451697 +0200
@@ -1 +1 @@
-ref: refs/heads/master
+ref: refs/heads/fix-azure-throttle
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/.git/ORIG_HEAD new/cloud-netconfig-1.0/.git/ORIG_HEAD
--- old/cloud-netconfig-0.9/.git/ORIG_HEAD 2019-01-31 14:11:27.887295630 +0100
+++ new/cloud-netconfig-1.0/.git/ORIG_HEAD 2019-05-15 22:09:32.394243055 +0200
@@ -1 +1 @@
-2f1207e6cea5f7f0b14dab0982d39425437ec099
+737eef55e55d7dfc91c693d4863c1ac0191d7481
Binary files old/cloud-netconfig-0.9/.git/index and new/cloud-netconfig-1.0/.git/index differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/.git/logs/HEAD new/cloud-netconfig-1.0/.git/logs/HEAD
--- old/cloud-netconfig-0.9/.git/logs/HEAD 2019-01-31 14:11:27.891295667 +0100
+++ new/cloud-netconfig-1.0/.git/logs/HEAD 2019-05-15 22:18:34.671345031 +0200
@@ -9,3 +9,7 @@
d43a993fe138431f16ee2a62a5e450551a4b1420 c706e96b9c508b7df831ed7d5c41e689372d357e Joachim Gleissner <jgleissner(a)suse.com> 1548863506 +0100 commit: run cloud-netconfig periodically (bsc#1118783 bsc#1122013)
c706e96b9c508b7df831ed7d5c41e689372d357e 2f1207e6cea5f7f0b14dab0982d39425437ec099 Joachim Gleissner <jgleissner(a)suse.com> 1548940283 +0100 checkout: moving from fixes to master
2f1207e6cea5f7f0b14dab0982d39425437ec099 737eef55e55d7dfc91c693d4863c1ac0191d7481 Joachim Gleissner <jgleissner(a)suse.com> 1548940287 +0100 pull --rebase: Fast-forward
+737eef55e55d7dfc91c693d4863c1ac0191d7481 737eef55e55d7dfc91c693d4863c1ac0191d7481 Joachim Gleissner <jgleissner(a)suse.com> 1548940329 +0100 reset: moving to HEAD
+737eef55e55d7dfc91c693d4863c1ac0191d7481 737eef55e55d7dfc91c693d4863c1ac0191d7481 Joachim Gleissner <jgleissner(a)suse.com> 1557950956 +0100 reset: moving to HEAD
+737eef55e55d7dfc91c693d4863c1ac0191d7481 737eef55e55d7dfc91c693d4863c1ac0191d7481 Joachim Gleissner <jgleissner(a)suse.com> 1557950994 +0100 checkout: moving from master to fix-azure-throttle
+737eef55e55d7dfc91c693d4863c1ac0191d7481 ef84f3b5b4c1383fb8850bdb33f20f155616e9d9 Joachim Gleissner <jgleissner(a)suse.com> 1557951273 +0100 commit: slow API requests down if necessary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/.git/logs/refs/heads/fix-azure-throttle new/cloud-netconfig-1.0/.git/logs/refs/heads/fix-azure-throttle
--- old/cloud-netconfig-0.9/.git/logs/refs/heads/fix-azure-throttle 1970-01-01 01:00:00.000000000 +0100
+++ new/cloud-netconfig-1.0/.git/logs/refs/heads/fix-azure-throttle 2019-05-15 22:18:34.671345031 +0200
@@ -0,0 +1,2 @@
+0000000000000000000000000000000000000000 737eef55e55d7dfc91c693d4863c1ac0191d7481 Joachim Gleissner <jgleissner(a)suse.com> 1557950994 +0100 branch: Created from HEAD
+737eef55e55d7dfc91c693d4863c1ac0191d7481 ef84f3b5b4c1383fb8850bdb33f20f155616e9d9 Joachim Gleissner <jgleissner(a)suse.com> 1557951273 +0100 commit: slow API requests down if necessary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/.git/logs/refs/remotes/origin/fix-azure-throttle new/cloud-netconfig-1.0/.git/logs/refs/remotes/origin/fix-azure-throttle
--- old/cloud-netconfig-0.9/.git/logs/refs/remotes/origin/fix-azure-throttle 1970-01-01 01:00:00.000000000 +0100
+++ new/cloud-netconfig-1.0/.git/logs/refs/remotes/origin/fix-azure-throttle 2019-05-15 22:19:00.291587328 +0200
@@ -0,0 +1 @@
+0000000000000000000000000000000000000000 ef84f3b5b4c1383fb8850bdb33f20f155616e9d9 Joachim Gleissner <jgleissner(a)suse.com> 1557951540 +0100 update by push
Binary files old/cloud-netconfig-0.9/.git/objects/13/b39fb65834123021738237b8fc4d708112620a and new/cloud-netconfig-1.0/.git/objects/13/b39fb65834123021738237b8fc4d708112620a differ
Binary files old/cloud-netconfig-0.9/.git/objects/4a/dd01ba4a5e729e023d967d743c180b9fae8b6e and new/cloud-netconfig-1.0/.git/objects/4a/dd01ba4a5e729e023d967d743c180b9fae8b6e differ
Binary files old/cloud-netconfig-0.9/.git/objects/70/11b267c7f77f50c531103e1b331d6d8d330d24 and new/cloud-netconfig-1.0/.git/objects/70/11b267c7f77f50c531103e1b331d6d8d330d24 differ
Binary files old/cloud-netconfig-0.9/.git/objects/7c/04573ce239e4de2f37db3b00307cc2268605eb and new/cloud-netconfig-1.0/.git/objects/7c/04573ce239e4de2f37db3b00307cc2268605eb differ
Binary files old/cloud-netconfig-0.9/.git/objects/97/d11cb66ab2c429a8202573fe7ef3bf66321798 and new/cloud-netconfig-1.0/.git/objects/97/d11cb66ab2c429a8202573fe7ef3bf66321798 differ
Binary files old/cloud-netconfig-0.9/.git/objects/a2/c0140c77324435d782eaab908478462ad12456 and new/cloud-netconfig-1.0/.git/objects/a2/c0140c77324435d782eaab908478462ad12456 differ
Binary files old/cloud-netconfig-0.9/.git/objects/d3/827e75a5cadb9fe4a27e1cb9b6d192e7323120 and new/cloud-netconfig-1.0/.git/objects/d3/827e75a5cadb9fe4a27e1cb9b6d192e7323120 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/.git/objects/ef/84f3b5b4c1383fb8850bdb33f20f155616e9d9 new/cloud-netconfig-1.0/.git/objects/ef/84f3b5b4c1383fb8850bdb33f20f155616e9d9
--- old/cloud-netconfig-0.9/.git/objects/ef/84f3b5b4c1383fb8850bdb33f20f155616e9d9 1970-01-01 01:00:00.000000000 +0100
+++ new/cloud-netconfig-1.0/.git/objects/ef/84f3b5b4c1383fb8850bdb33f20f155616e9d9 2019-05-15 22:18:34.671345031 +0200
@@ -0,0 +1 @@
+xRËnÛ0ì_±@/-8%ê4EåGmÙ±l§Ií€è"×tDʯ¯/¢COÝÓb03Á.WUUÝð©ÁgB8nÎ|F1ìÄèt<¡}»ÇkQ Ù±¥z!âR€TbÍc±'ü(°|Æ7v6r kL¡j+ƲáK%Öðáqókÿ€m®ªàRÆÔíŽ×qEmPcÿm±Ùmt¹éióៀÃ,¹œ»Œâ£ttœ€.ÓÅb9Rc~ö×é>GÓD_ŠÁ\µhnwœUvt>UB?,·gÞ¡[ü©{«l{]eû|Lz7©Zô>ûåìÓûdu0îLÑô1jÈ.c?ÓŸæ€?~)5}¯ÞxsEàêÄ'}ò³É ëÿ«Ñ[udBÏ
j£Ašr
9jÍê!éÅ€6Lriš<A:ûµ¥¡w,Wßiœ·f;dÅW£ÀH*4L0Ã@cœ·WªØ r²ŽìRBrnjlÃmQjàŽ'kÏ·ª
WrmïóŒf=(¹èÒ4ÌÊfµ=Ð ·Úð-×üëzŽCCøœÞwòQæ\
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/.git/refs/heads/fix-azure-throttle new/cloud-netconfig-1.0/.git/refs/heads/fix-azure-throttle
--- old/cloud-netconfig-0.9/.git/refs/heads/fix-azure-throttle 1970-01-01 01:00:00.000000000 +0100
+++ new/cloud-netconfig-1.0/.git/refs/heads/fix-azure-throttle 2019-05-15 22:18:34.671345031 +0200
@@ -0,0 +1 @@
+ef84f3b5b4c1383fb8850bdb33f20f155616e9d9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/.git/refs/remotes/origin/fix-azure-throttle new/cloud-netconfig-1.0/.git/refs/remotes/origin/fix-azure-throttle
--- old/cloud-netconfig-0.9/.git/refs/remotes/origin/fix-azure-throttle 1970-01-01 01:00:00.000000000 +0100
+++ new/cloud-netconfig-1.0/.git/refs/remotes/origin/fix-azure-throttle 2019-05-15 22:19:00.291587328 +0200
@@ -0,0 +1 @@
+ef84f3b5b4c1383fb8850bdb33f20f155616e9d9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/VERSION new/cloud-netconfig-1.0/VERSION
--- old/cloud-netconfig-0.9/VERSION 2019-01-31 14:11:27.887295630 +0100
+++ new/cloud-netconfig-1.0/VERSION 2019-05-15 22:13:24.984426821 +0200
@@ -1 +1 @@
-0.9
+1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/azure/functions.cloud-netconfig new/cloud-netconfig-1.0/azure/functions.cloud-netconfig
--- old/cloud-netconfig-0.9/azure/functions.cloud-netconfig 2019-01-29 17:25:43.522230722 +0100
+++ new/cloud-netconfig-1.0/azure/functions.cloud-netconfig 2019-05-15 22:10:36.470844110 +0200
@@ -21,6 +21,29 @@
URL_APX='?format=text&api-version=2017-04-02'
CURL="curl -m 3 -H $URL_HDR"
+
+# -------------------------------------------------------------------
+# look up a meta data item
+#
+get_from_metadata()
+{
+ local url="${METADATA_BASE_URL}${1}${URL_APX}"
+ local result=$($CURL $url 2>/dev/null)
+ local count=0
+
+ while [[ $result == "Too many requests" ]]; do
+ count=$((count+1))
+ if [[ $count -gt 10 ]]; then
+ return
+ fi
+ sleep 0.5
+ result=$($CURL $url 2>/dev/null)
+ done
+
+ echo -n $result
+}
+
+
# -------------------------------------------------------------------
# get the MAC address from the metadata server
# format is uppercase without semicolons
@@ -30,7 +53,7 @@
local if_idx="$1"
test -z "$if_idx" && return
- $CURL "${METADATA_BASE_URL}${if_idx}/macAddress${URL_APX}" 2>/dev/null
+ get_from_metadata "${if_idx}/macAddress"
}
# -------------------------------------------------------------------
@@ -42,12 +65,11 @@
local if_idx="$1" count=0 prefixlen="$2"
test -z "$if_idx" && return
- $CURL "${METADATA_BASE_URL}${if_idx}/ipv4/ipAddress/${URL_APX}" 2>/dev/null | \
- while read idx || [[ -n "$idx" ]] ; do
+ for idx in `get_from_metadata "${if_idx}/ipv4/ipAddress"` ; do
[[ $count -ge 1 ]] && echo -n " "
- $CURL "${METADATA_BASE_URL}${if_idx}/ipv4/ipAddress/${idx}/privateIpAddress${URL_APX}" 2>/dev/null
+ get_from_metadata "${if_idx}/ipv4/ipAddress/${idx}/privateIpAddress"
echo -n "/"
- $CURL "${METADATA_BASE_URL}${if_idx}/ipv4/subnet/0/prefix${URL_APX}" 2>/dev/null
+ get_from_metadata "${if_idx}/ipv4/subnet/0/prefix"
count=$((count+1))
done
}
@@ -62,7 +84,7 @@
local oldopt=$(shopt -p nocasematch)
shopt -s nocasematch
- $CURL "${METADATA_BASE_URL}${URL_APX}" 2>/dev/null | \
+ get_from_metadata | \
while read idx || [[ -n "$idx" ]] ; do
if [[ "$(get_iface_mac $idx)" == "${hwaddr//:/}" ]]; then
get_ipv4_addresses_by_index $idx
Binary files old/cloud-netconfig-0.9/cloud-netconfig-0.9.tar.bz2 and new/cloud-netconfig-1.0/cloud-netconfig-0.9.tar.bz2 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/cloud-netconfig-azure.spec new/cloud-netconfig-1.0/cloud-netconfig-azure.spec
--- old/cloud-netconfig-0.9/cloud-netconfig-azure.spec 2019-01-31 14:11:27.887295630 +0100
+++ new/cloud-netconfig-1.0/cloud-netconfig-azure.spec 2019-05-15 22:13:48.776650510 +0200
@@ -18,7 +18,7 @@
%define base_name cloud-netconfig
Name: %{base_name}-azure
-Version: 0.9
+Version: 1.0
Release: 0
License: GPL-3.0+
Summary: Network configuration scripts for Microsoft Azure
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/cloud-netconfig-ec2.spec new/cloud-netconfig-1.0/cloud-netconfig-ec2.spec
--- old/cloud-netconfig-0.9/cloud-netconfig-ec2.spec 2019-01-31 14:11:27.887295630 +0100
+++ new/cloud-netconfig-1.0/cloud-netconfig-ec2.spec 2019-05-15 22:13:53.952699180 +0200
@@ -18,7 +18,7 @@
%define base_name cloud-netconfig
Name: %{base_name}-ec2
-Version: 0.9
+Version: 1.0
Release: 0
License: GPL-3.0+
Summary: Network configuration scripts for Amazon EC2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cloud-netconfig-0.9/cloud-netconfig.spec new/cloud-netconfig-1.0/cloud-netconfig.spec
--- old/cloud-netconfig-0.9/cloud-netconfig.spec 2019-01-31 14:11:27.887295630 +0100
+++ new/cloud-netconfig-1.0/cloud-netconfig.spec 2019-05-15 22:14:00.660762259 +0200
@@ -32,7 +32,7 @@
%endif
Name: %{base_name}%{flavor_suffix}
-Version: 0.9
+Version: 1.0
Release: 0
License: GPL-3.0+
Summary: Network configuration scripts for %{csp_string}
1
0
Hello community,
here is the log from the commit of package python-django-reversion for openSUSE:Factory checked in at 2019-05-22 15:41:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-reversion (Old)
and /work/SRC/openSUSE:Factory/.python-django-reversion.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-reversion"
Wed May 22 15:41:21 2019 rev:10 rq:704709 version:3.0.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-django-reversion/python-django-reversion.changes 2019-05-05 21:22:12.581406368 +0200
+++ /work/SRC/openSUSE:Factory/.python-django-reversion.new.5148/python-django-reversion.changes 2019-05-22 15:42:08.482427028 +0200
@@ -1,0 +2,7 @@
+Wed May 22 10:51:51 UTC 2019 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Update to 3.0.4:
+ * Various dependency fixes
+- Upstreamed 0000-Remove-django.contrib.admin-dependency.patch
+
+-------------------------------------------------------------------
Old:
----
0000-Remove-django.contrib.admin-dependency.patch
django-reversion-3.0.3.tar.gz
New:
----
django-reversion-3.0.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-django-reversion.spec ++++++
--- /var/tmp/diff_new_pack.YDYylW/_old 2019-05-22 15:42:09.706427022 +0200
+++ /var/tmp/diff_new_pack.YDYylW/_new 2019-05-22 15:42:09.714427022 +0200
@@ -18,15 +18,13 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-django-reversion
-Version: 3.0.3
+Version: 3.0.4
Release: 0
Summary: A Django extension that provides version control for model instances
License: BSD-3-Clause
Group: Development/Languages/Python
URL: http://github.com/etianen/django-reversion
Source: https://files.pythonhosted.org/packages/source/d/django-reversion/django-re…
-# PATCH-FIX-UPSTREAM - 0000-Remove-django.contrib.admin-dependency.patch -- https://github.com/etianen/django-reversion/issues/744
-Patch0: 0000-Remove-django.contrib.admin-dependency.patch
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -46,7 +44,6 @@
%prep
%setup -q -n django-reversion-%{version}
-%autopatch -p1
%build
%python_build
++++++ django-reversion-3.0.3.tar.gz -> django-reversion-3.0.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-reversion-3.0.3/CHANGELOG.rst new/django-reversion-3.0.4/CHANGELOG.rst
--- old/django-reversion-3.0.3/CHANGELOG.rst 2019-01-24 11:20:24.000000000 +0100
+++ new/django-reversion-3.0.4/CHANGELOG.rst 2019-05-22 10:39:00.000000000 +0200
@@ -3,6 +3,14 @@
django-reversion changelog
==========================
+3.0.4 - 22/05/2019
+------------------
+
+- Remove `django.contrib.admin` dependency from django-reversion (Aitor Ruano).
+- README refactor (@rhenter).
+- Testing against Django 2.2 (@claudep).
+
+
3.0.3 - 24/01/2019
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-reversion-3.0.3/PKG-INFO new/django-reversion-3.0.4/PKG-INFO
--- old/django-reversion-3.0.3/PKG-INFO 2019-01-24 11:21:11.000000000 +0100
+++ new/django-reversion-3.0.4/PKG-INFO 2019-05-22 10:39:50.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: django-reversion
-Version: 3.0.3
+Version: 3.0.4
Summary: An extension to the Django web framework that provides version control for model instances.
Home-page: http://github.com/etianen/django-reversion
Author: Dave Hall
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-reversion-3.0.3/README.rst new/django-reversion-3.0.4/README.rst
--- old/django-reversion-3.0.3/README.rst 2019-01-24 11:20:24.000000000 +0100
+++ new/django-reversion-3.0.4/README.rst 2019-05-22 10:39:00.000000000 +0200
@@ -1,22 +1,31 @@
+================
django-reversion
================
+|PyPI latest| |PyPI Version| |PyPI License| |TravisCI| |Docs|
+
+
**django-reversion** is an extension to the Django web framework that provides
version control for model instances.
+Requirements
+============
+
+- Python 2.7 or later
+- Django 1.11 or later
+
Features
---------
+========
- Roll back to any point in a model instance's history.
- Recover deleted model instances.
- Simple admin integration.
-
Documentation
--------------
+=============
+
+Check out the latest ``django-reversion`` documentation at `Getting Started <http://django-reversion.readthedocs.io/>`_
-Please read the `Getting Started <https://django-reversion.readthedocs.io/>`_
-guide for more information.
Issue tracking and source code can be found at the
`main project website <http://github.com/etianen/django-reversion>`_.
@@ -24,37 +33,49 @@
You can keep up to date with the latest announcements by joining the
`django-reversion discussion group <http://groups.google.com/group/django-reversion>`_.
-
Upgrading
----------
+=========
Please check the `Changelog <https://github.com/etianen/django-reversion/blob/master/CHANGELOG.rst>`_ before upgrading
your installation of django-reversion.
-
Contributing
-------------
+============
Bug reports, bug fixes, and new features are always welcome. Please raise issues on the
`django-reversion project site <http://github.com/etianen/django-reversion>`_, and submit
pull requests for any new code.
-You can run the test suite yourself from within a virtual environment with the following
-commands. The test suite requires that both MySQL and PostgreSQL be installed.
+1. Fork the `repository <http://github.com/etianen/django-reversion>`_ on GitHub.
+2. Make a branch off of master and commit your changes to it.
+3. Install requirements.
.. code:: bash
- pip install psycopg2 mysqlclient -e .
- tests/manage.py test tests
+ $ pip install django psycopg2 mysqlclient -e .
+
+4. Run the tests
-The django-reversion project is built on every push with `Travis CI <https://travis-ci.org/etianen/django-reversion>`_.
+.. code:: bash
-.. image:: https://travis-ci.org/etianen/django-reversion.svg?branch=master
- :target: https://travis-ci.org/etianen/django-reversion
+ $ tests/manage.py test tests
+5. Create a Pull Request with your contribution
Contributors
-------------
+============
The django-reversion project was developed by `Dave Hall <http://www.etianen.com/>`_ and contributed
to by `many other people <https://github.com/etianen/django-reversion/graphs/contributors>`_.
+
+
+.. |Docs| image:: https://readthedocs.org/projects/django-reversion/badge/?version=latest
+ :target: http://django-reversion.readthedocs.org/en/latest/?badge=latest
+.. |PyPI Version| image:: https://img.shields.io/pypi/pyversions/django-reversion.svg?maxAge=60
+ :target: https://pypi.python.org/pypi/django-reversion
+.. |PyPI License| image:: https://img.shields.io/pypi/l/django-reversion.svg?maxAge=120
+ :target: https://github.com/rhenter/django-reversion/blob/master/LICENSE
+.. |PyPI latest| image:: https://img.shields.io/pypi/v/django-reversion.svg?maxAge=120
+ :target: https://pypi.python.org/pypi/django-reversion
+.. |TravisCI| image:: https://travis-ci.org/etianen/django-reversion.svg?branch=master
+ :target: https://travis-ci.org/etianen/django-reversion
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-reversion-3.0.3/django_reversion.egg-info/PKG-INFO new/django-reversion-3.0.4/django_reversion.egg-info/PKG-INFO
--- old/django-reversion-3.0.3/django_reversion.egg-info/PKG-INFO 2019-01-24 11:21:11.000000000 +0100
+++ new/django-reversion-3.0.4/django_reversion.egg-info/PKG-INFO 2019-05-22 10:39:50.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: django-reversion
-Version: 3.0.3
+Version: 3.0.4
Summary: An extension to the Django web framework that provides version control for model instances.
Home-page: http://github.com/etianen/django-reversion
Author: Dave Hall
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-reversion-3.0.3/reversion/__init__.py new/django-reversion-3.0.4/reversion/__init__.py
--- old/django-reversion-3.0.3/reversion/__init__.py 2019-01-24 11:20:24.000000000 +0100
+++ new/django-reversion-3.0.4/reversion/__init__.py 2019-05-22 10:39:00.000000000 +0200
@@ -36,4 +36,4 @@
get_registered_models,
)
-__version__ = VERSION = (3, 0, 3)
+__version__ = VERSION = (3, 0, 4)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-reversion-3.0.3/reversion/models.py new/django-reversion-3.0.4/reversion/models.py
--- old/django-reversion-3.0.3/reversion/models.py 2019-01-24 11:20:24.000000000 +0100
+++ new/django-reversion-3.0.4/reversion/models.py 2019-05-22 10:39:00.000000000 +0200
@@ -1,21 +1,26 @@
from __future__ import unicode_literals
+
from collections import defaultdict
from itertools import chain, groupby
+
+from django.apps import apps
+from django.conf import settings
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
-from django.conf import settings
-from django.contrib.admin.models import LogEntry
from django.core import serializers
-from django.core.serializers.base import DeserializationError
from django.core.exceptions import ObjectDoesNotExist
-from django.db import models, IntegrityError, transaction, router, connections
+from django.core.serializers.base import DeserializationError
+from django.db import IntegrityError, connections, models, router, transaction
from django.db.models.deletion import Collector
from django.db.models.expressions import RawSQL
-from django.utils.functional import cached_property
-from django.utils.translation import ugettext_lazy as _, ugettext
from django.utils.encoding import force_text, python_2_unicode_compatible
+from django.utils.functional import cached_property
+from django.utils.translation import ugettext
+from django.utils.translation import ugettext_lazy as _
+
from reversion.errors import RevertError
-from reversion.revisions import _get_options, _get_content_type, _follow_relations_recursive
+from reversion.revisions import (_follow_relations_recursive,
+ _get_content_type, _get_options)
def _safe_revert(versions):
@@ -61,7 +66,11 @@
)
def get_comment(self):
- return LogEntry(change_message=self.comment).get_change_message()
+ try:
+ LogEntry = apps.get_model('admin.LogEntry')
+ return LogEntry(change_message=self.comment).get_change_message()
+ except LookupError:
+ return self.comment
def revert(self, delete=False):
# Group the models by the database of the serialized model.
1
0
Hello community,
here is the log from the commit of package python-django-nine for openSUSE:Factory checked in at 2019-05-22 15:41:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-nine (Old)
and /work/SRC/openSUSE:Factory/.python-django-nine.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-nine"
Wed May 22 15:41:19 2019 rev:2 rq:704708 version:0.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-django-nine/python-django-nine.changes 2019-05-22 11:03:49.646612957 +0200
+++ /work/SRC/openSUSE:Factory/.python-django-nine.new.5148/python-django-nine.changes 2019-05-22 15:42:06.850427035 +0200
@@ -1,0 +2,19 @@
+Wed May 22 10:47:49 UTC 2019 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Update to 0.2.2:
+ * Fixes in backwards compatibility
+ * Bring back the user compatibility module. However, it's deprecated and
+ will be removed in version 0.3
+ * Show deprecation warnings
+
+-------------------------------------------------------------------
+Fri May 17 10:34:46 UTC 2019 - John Vandenberg <jayvdb(a)gmail.com>
+
+- Removed Conflicts with python-nine
+- Update to v0.2
+ * Drop Python 2.6 support.
+ * Change namespace from `nine` to `django_nine`.
+ * Removed `user` compatibility module.
+ * Add travis.
+
+-------------------------------------------------------------------
Old:
----
django-nine-0.1.13.tar.gz
New:
----
django-nine-0.2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-django-nine.spec ++++++
--- /var/tmp/diff_new_pack.ZGylVV/_old 2019-05-22 15:42:08.134427029 +0200
+++ /var/tmp/diff_new_pack.ZGylVV/_new 2019-05-22 15:42:08.134427029 +0200
@@ -12,26 +12,25 @@
# 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/
+#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-django-nine
-Version: 0.1.13
+Version: 0.2.2
Release: 0
-License: GPL-2.0 or LGPL-2.1-or-later
Summary: Compatibility library for Django
-Url: https://github.com/barseghyanartur/django-nine/
+License: GPL-2.0-only OR LGPL-2.1-or-later
Group: Development/Languages/Python
+Url: https://github.com/barseghyanartur/django-nine/
Source: https://files.pythonhosted.org/packages/source/d/django-nine/django-nine-%{…
-BuildRequires: python-rpm-macros
BuildRequires: %{python_module setuptools}
+BuildRequires: python-rpm-macros
# SECTION test requirements
BuildRequires: %{python_module Django}
BuildRequires: %{python_module mock}
BuildRequires: %{python_module pytest-django}
-# https://github.com/barseghyanartur/django-nine/issues/2
-Conflicts: python-nine
# /SECTION
BuildRequires: fdupes
BuildArch: noarch
@@ -39,23 +38,26 @@
%python_subpackages
%description
-Compatibility library for Django.
+Version checking library for Django.
%prep
%setup -q -n django-nine-%{version}
chmod a-x LICENSE_* CHANGELOG.rst README.rst
+# Remove backwards compatibility layer
+rm src/nine/__init__.py
+
%build
%python_build
%install
%python_install
-%{python_expand rm -r %{buildroot}%{$python_sitelib}/nine/tests/
+%{python_expand rm -r %{buildroot}%{$python_sitelib}/django_nine/tests/
%fdupes %{buildroot}%{$python_sitelib}
}
%check
-%pytest src/nine/tests/
+%pytest src/django_nine/tests/
%files %{python_files}
%doc CHANGELOG.rst README.rst
++++++ django-nine-0.1.13.tar.gz -> django-nine-0.2.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/CHANGELOG.rst new/django-nine-0.2.2/CHANGELOG.rst
--- old/django-nine-0.1.13/CHANGELOG.rst 2017-05-16 22:25:32.000000000 +0200
+++ new/django-nine-0.2.2/CHANGELOG.rst 2019-05-19 19:15:10.000000000 +0200
@@ -15,6 +15,34 @@
0.3.2 to 0.4).
- All backwards incompatible changes are mentioned in this document.
+0.2.2
+---
+2019-05-18
+
+- Bring back the `user` compatibility module. However, it's deprecated and
+ will be removed in version 0.3.
+- Show deprecation warnings.
+
+0.2.1
+---
+2019-05-18
+
+- Fixes in backwards compatibility.
+
+0.2
+---
+2019-05-17
+
+.. note::
+
+ This release is still backwards-compatible with previous versions (0.1.x),
+ but next versions (0.3.x) would not be.
+
+- Drop Python 2.6 support.
+- Change namespace from `nine` to `django_nine`.
+- Removed `user` compatibility module. Implement your own if you need.
+- Add travis.
+
0.1.13
------
2017-05-16
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/LICENSE_GPL2.0.txt new/django-nine-0.2.2/LICENSE_GPL2.0.txt
--- old/django-nine-0.1.13/LICENSE_GPL2.0.txt 2017-02-09 22:54:43.000000000 +0100
+++ new/django-nine-0.2.2/LICENSE_GPL2.0.txt 2019-05-16 23:10:20.000000000 +0200
@@ -291,7 +291,7 @@
the "copyright" line and a pointer to where the full notice is found.
django-nine - compatibility library for Django.
- Copyright (C) 2015-2017 Artur Barseghyan
+ Copyright (C) 2015-2019 Artur Barseghyan
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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/LICENSE_LGPL_2.1.txt new/django-nine-0.2.2/LICENSE_LGPL_2.1.txt
--- old/django-nine-0.1.13/LICENSE_LGPL_2.1.txt 2017-02-09 22:54:43.000000000 +0100
+++ new/django-nine-0.2.2/LICENSE_LGPL_2.1.txt 2019-05-16 23:10:20.000000000 +0200
@@ -471,7 +471,7 @@
"copyright" line and a pointer to where the full notice is found.
django-nine - compatibility library for Django.
- Copyright (C) 2015-2017 Artur Barseghyan
+ Copyright (C) 2015-2019 Artur Barseghyan
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/PKG-INFO new/django-nine-0.2.2/PKG-INFO
--- old/django-nine-0.1.13/PKG-INFO 2017-05-16 22:28:17.000000000 +0200
+++ new/django-nine-0.2.2/PKG-INFO 2019-05-19 19:16:50.000000000 +0200
@@ -1,20 +1,32 @@
Metadata-Version: 1.1
Name: django-nine
-Version: 0.1.13
-Summary: Compatibility library for Django.
+Version: 0.2.2
+Summary: Version checking library.
Home-page: https://github.com/barseghyanartur/django-nine/
Author: Artur Barseghyan
Author-email: artur.barseghyan(a)gmail.com
-License: GPL 2.0/LGPL 2.1
+License: GPL-2.0-only OR LGPL-2.1-or-later
Description: ===========
django-nine
===========
- `django-nine` - compatibility library for Django.
+ `django-nine` - version checking library for Django.
+
+ .. image:: https://img.shields.io/pypi/v/django-nine.svg
+ :target: https://pypi.python.org/pypi/django-nine
+ :alt: PyPI Version
+
+ .. image:: https://img.shields.io/travis/barseghyanartur/django-nine/master.svg
+ :target: http://travis-ci.org/barseghyanartur/django-nine
+ :alt: Build Status
+
+ .. image:: https://img.shields.io/badge/license-GPL--2.0--only%20OR%20LGPL--2.1--or--l…
+ :target: https://github.com/barseghyanartur/django-nine/#License
+ :alt: GPL-2.0-only OR LGPL-2.1-or-later
Prerequisites
=============
- - Python 2.6, 2.7, 3.4, 3.5 and 3.6.
- - Django 1.5, 1.6, 1.7, 1.8, 1.9, 1.10 and 1.11.
+ - Python 2.6, 2.7, 3.4, 3.5, 3.6 and 3.7.
+ - Django 1.5, 1.6, 1.7, 1.8, 1.9, 1.10, 1.11, 2.0, 2.1 and 2.2.
Installation
============
@@ -47,7 +59,7 @@
.. code-block:: python
- from nine import versions
+ from django_nine import versions
versions.DJANGO_1_7 # True
versions.DJANGO_LTE_1_7 # True
@@ -65,21 +77,13 @@
.. code-block:: python
TEMPLATES[0]['OPTIONS']['context_processors'] += \
- ['nine.context_processors.versions']
+ ['django_nine.context_processors.versions']
Or if you are using an old version of Django:
.. code-block:: python
- TEMPLATE_CONTEXT_PROCESSORS += ['nine.context_processors.versions']
-
- Import User model
- -----------------
- Or you could safely import the user model as follows:
-
- .. code-block:: python
-
- from nine.user import User
+ TEMPLATE_CONTEXT_PROCESSORS += ['django_nine.context_processors.versions']
Testing
=======
@@ -99,7 +103,7 @@
.. code-block:: sh
- tox -e py35
+ tox -e py37
Or run Django tests:
@@ -109,7 +113,7 @@
License
=======
- GPL 2.0/LGPL 2.1
+ GPL-2.0-only OR LGPL-2.1-or-later
Support
=======
@@ -128,6 +132,7 @@
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Environment :: Web Environment
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/README.rst new/django-nine-0.2.2/README.rst
--- old/django-nine-0.1.13/README.rst 2017-05-16 22:24:55.000000000 +0200
+++ new/django-nine-0.2.2/README.rst 2019-05-16 23:10:20.000000000 +0200
@@ -1,12 +1,24 @@
===========
django-nine
===========
-`django-nine` - compatibility library for Django.
+`django-nine` - version checking library for Django.
+
+.. image:: https://img.shields.io/pypi/v/django-nine.svg
+ :target: https://pypi.python.org/pypi/django-nine
+ :alt: PyPI Version
+
+.. image:: https://img.shields.io/travis/barseghyanartur/django-nine/master.svg
+ :target: http://travis-ci.org/barseghyanartur/django-nine
+ :alt: Build Status
+
+.. image:: https://img.shields.io/badge/license-GPL--2.0--only%20OR%20LGPL--2.1--or--l…
+ :target: https://github.com/barseghyanartur/django-nine/#License
+ :alt: GPL-2.0-only OR LGPL-2.1-or-later
Prerequisites
=============
-- Python 2.6, 2.7, 3.4, 3.5 and 3.6.
-- Django 1.5, 1.6, 1.7, 1.8, 1.9, 1.10 and 1.11.
+- Python 2.6, 2.7, 3.4, 3.5, 3.6 and 3.7.
+- Django 1.5, 1.6, 1.7, 1.8, 1.9, 1.10, 1.11, 2.0, 2.1 and 2.2.
Installation
============
@@ -39,7 +51,7 @@
.. code-block:: python
- from nine import versions
+ from django_nine import versions
versions.DJANGO_1_7 # True
versions.DJANGO_LTE_1_7 # True
@@ -57,21 +69,13 @@
.. code-block:: python
TEMPLATES[0]['OPTIONS']['context_processors'] += \
- ['nine.context_processors.versions']
+ ['django_nine.context_processors.versions']
Or if you are using an old version of Django:
.. code-block:: python
- TEMPLATE_CONTEXT_PROCESSORS += ['nine.context_processors.versions']
-
-Import User model
------------------
-Or you could safely import the user model as follows:
-
-.. code-block:: python
-
- from nine.user import User
+ TEMPLATE_CONTEXT_PROCESSORS += ['django_nine.context_processors.versions']
Testing
=======
@@ -91,7 +95,7 @@
.. code-block:: sh
- tox -e py35
+ tox -e py37
Or run Django tests:
@@ -101,7 +105,7 @@
License
=======
-GPL 2.0/LGPL 2.1
+GPL-2.0-only OR LGPL-2.1-or-later
Support
=======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/setup.cfg new/django-nine-0.2.2/setup.cfg
--- old/django-nine-0.1.13/setup.cfg 2017-05-16 22:28:17.000000000 +0200
+++ new/django-nine-0.2.2/setup.cfg 2019-05-19 19:16:50.000000000 +0200
@@ -4,5 +4,4 @@
[egg_info]
tag_build =
tag_date = 0
-tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/setup.py new/django-nine-0.2.2/setup.py
--- old/django-nine-0.1.13/setup.py 2017-05-16 22:25:40.000000000 +0200
+++ new/django-nine-0.2.2/setup.py 2019-05-19 19:15:17.000000000 +0200
@@ -7,7 +7,7 @@
except:
readme = ''
-version = '0.1.13'
+version = '0.2.2'
install_requires = [
#'Django',
@@ -32,7 +32,7 @@
setup(
name='django-nine',
version=version,
- description="Compatibility library for Django.",
+ description="Version checking library.",
long_description="{0}".format(readme),
classifiers=[
"Programming Language :: Python :: 2.6",
@@ -42,6 +42,7 @@
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
+ "Programming Language :: Python :: 3.7",
"Environment :: Web Environment",
"License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
"License :: OSI Approved :: GNU Lesser General Public License v2 or "
@@ -57,7 +58,7 @@
url='https://github.com/barseghyanartur/django-nine/',
package_dir={'': 'src'},
packages=find_packages(where='./src'),
- license='GPL 2.0/LGPL 2.1',
+ license='GPL-2.0-only OR LGPL-2.1-or-later',
install_requires=install_requires,
tests_require=tests_require,
package_data={},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/django_nine/__init__.py new/django-nine-0.2.2/src/django_nine/__init__.py
--- old/django-nine-0.1.13/src/django_nine/__init__.py 1970-01-01 01:00:00.000000000 +0100
+++ new/django-nine-0.2.2/src/django_nine/__init__.py 2019-05-19 19:09:28.000000000 +0200
@@ -0,0 +1,5 @@
+__title__ = 'django_nine'
+__version__ = '0.2.2'
+__author__ = 'Artur Barseghyan <artur.barseghyan(a)gmail.com>'
+__copyright__ = '2015-2019 Artur Barseghyan'
+__license__ = 'GPL-2.0-only OR LGPL-2.1-or-later'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/django_nine/context_processors.py new/django-nine-0.2.2/src/django_nine/context_processors.py
--- old/django-nine-0.1.13/src/django_nine/context_processors.py 1970-01-01 01:00:00.000000000 +0100
+++ new/django-nine-0.2.2/src/django_nine/context_processors.py 2019-05-16 23:10:20.000000000 +0200
@@ -0,0 +1,18 @@
+from django_nine import versions as nine_versions
+
+__title__ = 'django_nine.versions'
+__author__ = 'Artur Barseghyan <artur.barseghyan(a)gmail.com>'
+__copyright__ = '2015-2019 Artur Barseghyan'
+__license__ = 'GPL-2.0-only OR LGPL-2.1-or-later'
+__all__ = [
+ 'versions',
+]
+
+
+def versions(request):
+ """Get active theme.
+
+ :param django.http.HttpRequest request:
+ :return dict:
+ """
+ return {'VERSIONS': nine_versions}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/django_nine/tests/__init__.py new/django-nine-0.2.2/src/django_nine/tests/__init__.py
--- old/django-nine-0.1.13/src/django_nine/tests/__init__.py 1970-01-01 01:00:00.000000000 +0100
+++ new/django-nine-0.2.2/src/django_nine/tests/__init__.py 2019-05-16 23:10:20.000000000 +0200
@@ -0,0 +1 @@
+from .test_versions import *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/django_nine/tests/base.py new/django-nine-0.2.2/src/django_nine/tests/base.py
--- old/django-nine-0.1.13/src/django_nine/tests/base.py 1970-01-01 01:00:00.000000000 +0100
+++ new/django-nine-0.2.2/src/django_nine/tests/base.py 2019-05-16 23:10:20.000000000 +0200
@@ -0,0 +1,36 @@
+import logging
+
+__title__ = 'django_nine.tests.base'
+__author__ = 'Artur Barseghyan'
+__copyright__ = '2015-2019 Artur Barseghyan'
+__license__ = 'GPL-2.0-only OR LGPL-2.1-or-later'
+__all__ = (
+ 'LOG_INFO',
+ 'log_info',
+)
+
+
+logger = logging.getLogger(__name__)
+
+LOG_INFO = True
+
+
+def log_info(func):
+ """Logs some useful info."""
+ if not LOG_INFO:
+ return func
+
+ def inner(self, *args, **kwargs):
+ result = func(self, *args, **kwargs)
+
+ logger.info('\n\n%s' % func.__name__)
+ logger.info('============================')
+ if func.__doc__:
+ logger.info('""" %s """' % func.__doc__.strip())
+ logger.info('----------------------------')
+ if result is not None:
+ logger.info(result)
+ logger.info('\n++++++++++++++++++++++++++++')
+
+ return result
+ return inner
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/django_nine/tests/test_versions.py new/django-nine-0.2.2/src/django_nine/tests/test_versions.py
--- old/django-nine-0.1.13/src/django_nine/tests/test_versions.py 1970-01-01 01:00:00.000000000 +0100
+++ new/django-nine-0.2.2/src/django_nine/tests/test_versions.py 2019-05-16 23:10:20.000000000 +0200
@@ -0,0 +1,233 @@
+import unittest
+import mock
+# For Python3 >= 3.4
+try:
+ from importlib import reload
+# For Python3 < 3.4
+except ImportError as err:
+ try:
+ from imp import reload
+ except ImportError as err:
+ pass
+
+import django
+
+from .base import log_info
+
+__title__ = 'django_nine.tests.test_versions'
+__author__ = 'Artur Barseghyan'
+__copyright__ = 'Copyright (c) 2015 Artur Barseghyan'
+__license__ = 'GPL-2.0-only OR LGPL-2.1-or-later'
+__all__ = ('VersionsTest',)
+
+
+class VersionsTest(unittest.TestCase):
+ """
+ Tests of ``django_nine.versions`` module.
+ """
+ def setUp(self):
+ pass
+
+ @log_info
+ @mock.patch('django.get_version', mock.MagicMock(return_value='1.4.21'))
+ def test_django_1_4_21(self):
+ """
+ Tests as if we were using Django==1.4.21.
+ """
+ from django_nine import versions
+ reload(versions)
+
+ # Exact version matching
+ self.assertTrue(versions.DJANGO_1_4)
+ self.assertTrue(not versions.DJANGO_1_5)
+ self.assertTrue(not versions.DJANGO_1_6)
+ self.assertTrue(not versions.DJANGO_1_7)
+ self.assertTrue(not versions.DJANGO_1_8)
+ self.assertTrue(not versions.DJANGO_1_9)
+
+ # Less than or equal matching
+ self.assertTrue(versions.DJANGO_LTE_1_4)
+ self.assertTrue(versions.DJANGO_LTE_1_5)
+ self.assertTrue(versions.DJANGO_LTE_1_6)
+ self.assertTrue(versions.DJANGO_LTE_1_7)
+ self.assertTrue(versions.DJANGO_LTE_1_8)
+ self.assertTrue(versions.DJANGO_LTE_1_9)
+
+ # Greater than or equal matching
+ self.assertTrue(versions.DJANGO_GTE_1_4)
+ self.assertTrue(not versions.DJANGO_GTE_1_5)
+ self.assertTrue(not versions.DJANGO_GTE_1_6)
+ self.assertTrue(not versions.DJANGO_GTE_1_7)
+ self.assertTrue(not versions.DJANGO_GTE_1_8)
+ self.assertTrue(not versions.DJANGO_GTE_1_9)
+
+ @log_info
+ @mock.patch('django.get_version', mock.MagicMock(return_value='1.5.5'))
+ def test_django_1_5_5(self):
+ """
+ Tests as if we were using Django==1.5.5.
+ """
+ from django_nine import versions
+ reload(versions)
+
+ # Exact version matching
+ self.assertTrue(not versions.DJANGO_1_4)
+ self.assertTrue(versions.DJANGO_1_5)
+ self.assertTrue(not versions.DJANGO_1_6)
+ self.assertTrue(not versions.DJANGO_1_7)
+ self.assertTrue(not versions.DJANGO_1_8)
+ self.assertTrue(not versions.DJANGO_1_9)
+
+ # Less than or equal matching
+ self.assertTrue(not versions.DJANGO_LTE_1_4)
+ self.assertTrue(versions.DJANGO_LTE_1_5)
+ self.assertTrue(versions.DJANGO_LTE_1_6)
+ self.assertTrue(versions.DJANGO_LTE_1_7)
+ self.assertTrue(versions.DJANGO_LTE_1_8)
+ self.assertTrue(versions.DJANGO_LTE_1_9)
+
+ # Greater than or equal matching
+ self.assertTrue(versions.DJANGO_GTE_1_4)
+ self.assertTrue(versions.DJANGO_GTE_1_5)
+ self.assertTrue(not versions.DJANGO_GTE_1_6)
+ self.assertTrue(not versions.DJANGO_GTE_1_7)
+ self.assertTrue(not versions.DJANGO_GTE_1_8)
+ self.assertTrue(not versions.DJANGO_GTE_1_9)
+
+ @log_info
+ @mock.patch('django.get_version', mock.MagicMock(return_value='1.6.5'))
+ def test_django_1_6_5(self):
+ """
+ Tests as if we were using Django==1.6.5.
+ """
+ from django_nine import versions
+ reload(versions)
+
+ # Exact version matching
+ self.assertTrue(not versions.DJANGO_1_4)
+ self.assertTrue(not versions.DJANGO_1_5)
+ self.assertTrue(versions.DJANGO_1_6)
+ self.assertTrue(not versions.DJANGO_1_7)
+ self.assertTrue(not versions.DJANGO_1_8)
+ self.assertTrue(not versions.DJANGO_1_9)
+
+ # Less than or equal matching
+ self.assertTrue(not versions.DJANGO_LTE_1_4)
+ self.assertTrue(not versions.DJANGO_LTE_1_5)
+ self.assertTrue(versions.DJANGO_LTE_1_6)
+ self.assertTrue(versions.DJANGO_LTE_1_7)
+ self.assertTrue(versions.DJANGO_LTE_1_8)
+ self.assertTrue(versions.DJANGO_LTE_1_9)
+
+ # Greater than or equal matching
+ self.assertTrue(versions.DJANGO_GTE_1_4)
+ self.assertTrue(versions.DJANGO_GTE_1_5)
+ self.assertTrue(versions.DJANGO_GTE_1_6)
+ self.assertTrue(not versions.DJANGO_GTE_1_7)
+ self.assertTrue(not versions.DJANGO_GTE_1_8)
+ self.assertTrue(not versions.DJANGO_GTE_1_9)
+
+ @log_info
+ @mock.patch('django.get_version', mock.MagicMock(return_value='1.7.5'))
+ def test_django_1_7_5(self):
+ """
+ Tests as if we were using Django==1.7.5.
+ """
+ from django_nine import versions
+ reload(versions)
+
+ # Exact version matching
+ self.assertTrue(not versions.DJANGO_1_4)
+ self.assertTrue(not versions.DJANGO_1_5)
+ self.assertTrue(not versions.DJANGO_1_6)
+ self.assertTrue(versions.DJANGO_1_7)
+ self.assertTrue(not versions.DJANGO_1_8)
+ self.assertTrue(not versions.DJANGO_1_9)
+
+ # Less than or equal matching
+ self.assertTrue(not versions.DJANGO_LTE_1_4)
+ self.assertTrue(not versions.DJANGO_LTE_1_5)
+ self.assertTrue(not versions.DJANGO_LTE_1_6)
+ self.assertTrue(versions.DJANGO_LTE_1_7)
+ self.assertTrue(versions.DJANGO_LTE_1_8)
+ self.assertTrue(versions.DJANGO_LTE_1_9)
+
+ # Greater than or equal matching
+ self.assertTrue(versions.DJANGO_GTE_1_4)
+ self.assertTrue(versions.DJANGO_GTE_1_5)
+ self.assertTrue(versions.DJANGO_GTE_1_6)
+ self.assertTrue(versions.DJANGO_GTE_1_7)
+ self.assertTrue(not versions.DJANGO_GTE_1_8)
+ self.assertTrue(not versions.DJANGO_GTE_1_9)
+
+ @log_info
+ @mock.patch('django.get_version', mock.MagicMock(return_value='1.8.a1'))
+ def test_django_1_8_a1(self):
+ """
+ Tests as if we were using Django==1.8.a1.
+ """
+ from django_nine import versions
+ reload(versions)
+
+ # Exact version matching
+ self.assertTrue(not versions.DJANGO_1_4)
+ self.assertTrue(not versions.DJANGO_1_5)
+ self.assertTrue(not versions.DJANGO_1_6)
+ self.assertTrue(not versions.DJANGO_1_7)
+ self.assertTrue(versions.DJANGO_1_8)
+ self.assertTrue(not versions.DJANGO_1_9)
+
+ # Less than or equal matching
+ self.assertTrue(not versions.DJANGO_LTE_1_4)
+ self.assertTrue(not versions.DJANGO_LTE_1_5)
+ self.assertTrue(not versions.DJANGO_LTE_1_6)
+ self.assertTrue(not versions.DJANGO_LTE_1_7)
+ self.assertTrue(versions.DJANGO_LTE_1_8)
+ self.assertTrue(versions.DJANGO_LTE_1_9)
+
+ # Greater than or equal matching
+ self.assertTrue(versions.DJANGO_GTE_1_4)
+ self.assertTrue(versions.DJANGO_GTE_1_5)
+ self.assertTrue(versions.DJANGO_GTE_1_6)
+ self.assertTrue(versions.DJANGO_GTE_1_7)
+ self.assertTrue(versions.DJANGO_GTE_1_8)
+ self.assertTrue(not versions.DJANGO_GTE_1_9)
+
+ @log_info
+ @mock.patch('django.get_version', mock.MagicMock(return_value='1.10'))
+ def test_django_1_10(self):
+ """
+ Tests as if we were using Django==1.10.
+ """
+ from django_nine import versions
+ reload(versions)
+
+ # Exact version matching
+ self.assertTrue(not versions.DJANGO_1_4)
+ self.assertTrue(not versions.DJANGO_1_5)
+ self.assertTrue(not versions.DJANGO_1_6)
+ self.assertTrue(not versions.DJANGO_1_7)
+ self.assertTrue(not versions.DJANGO_1_8)
+ self.assertTrue(not versions.DJANGO_1_9)
+ self.assertTrue(versions.DJANGO_1_10)
+
+ # Less than or equal matching
+ self.assertTrue(not versions.DJANGO_LTE_1_4)
+ self.assertTrue(not versions.DJANGO_LTE_1_5)
+ self.assertTrue(not versions.DJANGO_LTE_1_6)
+ self.assertTrue(not versions.DJANGO_LTE_1_7)
+ self.assertTrue(not versions.DJANGO_LTE_1_8)
+ self.assertTrue(not versions.DJANGO_LTE_1_9)
+
+ # Greater than or equal matching
+ self.assertTrue(versions.DJANGO_GTE_1_4)
+ self.assertTrue(versions.DJANGO_GTE_1_5)
+ self.assertTrue(versions.DJANGO_GTE_1_6)
+ self.assertTrue(versions.DJANGO_GTE_1_7)
+ self.assertTrue(versions.DJANGO_GTE_1_8)
+ self.assertTrue(versions.DJANGO_GTE_1_9)
+ self.assertTrue(versions.DJANGO_GTE_1_10)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/django_nine/user.py new/django-nine-0.2.2/src/django_nine/user.py
--- old/django-nine-0.1.13/src/django_nine/user.py 1970-01-01 01:00:00.000000000 +0100
+++ new/django-nine-0.2.2/src/django_nine/user.py 2019-05-19 19:13:56.000000000 +0200
@@ -0,0 +1,51 @@
+"""
+Compatibility module for safe and sane User model import.
+"""
+
+import importlib
+import warnings
+
+from django.conf import settings
+from django.core.exceptions import ImproperlyConfigured
+
+from .versions import DJANGO_LTE_1_4, DJANGO_LTE_1_6, DJANGO_GTE_1_7
+
+if DJANGO_LTE_1_4:
+ from django.contrib.auth.models import User
+else:
+ # Cannot use contrib.auth.get_user_model() at compile time.
+ user_app_name, user_model_name = settings.AUTH_USER_MODEL.rsplit('.', 1)
+ User = None
+
+ if DJANGO_LTE_1_6:
+ for app in settings.INSTALLED_APPS:
+ if app.endswith(user_app_name):
+ user_app_models = importlib.import_module(app + ".models")
+ User = getattr(user_app_models, user_model_name)
+ break
+ elif DJANGO_GTE_1_7:
+ from django.apps import apps
+ try:
+ User = apps.get_registered_model(user_app_name, user_model_name)
+ except KeyError:
+ pass
+
+ if User is None:
+ raise ImproperlyConfigured(
+ "You have defined a custom user model {0}, but the app {1} is "
+ "not in ``settings.INSTALLED_APPS``"
+ "".format(settings.AUTH_USER_MODEL, user_app_name)
+ )
+
+__title__ = 'nine.user'
+__author__ = 'Artur Barseghyan <artur.barseghyan(a)gmail.com>'
+__copyright__ = 'Copyright (c) 2015-2017 Artur Barseghyan'
+__license__ = 'GPL 2.0/LGPL 2.1'
+__all__ = ('User',)
+
+
+warnings.warn(
+ "The `django_nine.user` module is deprecated and will be removed in "
+ "version 0.3.",
+ DeprecationWarning
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/django_nine/versions.py new/django-nine-0.2.2/src/django_nine/versions.py
--- old/django-nine-0.1.13/src/django_nine/versions.py 1970-01-01 01:00:00.000000000 +0100
+++ new/django-nine-0.2.2/src/django_nine/versions.py 2019-05-16 23:10:20.000000000 +0200
@@ -0,0 +1,81 @@
+"""
+Contains information about the current Django version in use, including (LTE
+and GTE).
+"""
+
+from distutils.version import LooseVersion
+
+import django
+
+__title__ = 'django_nine.versions'
+__author__ = 'Artur Barseghyan <artur.barseghyan(a)gmail.com>'
+__copyright__ = '2015-2019 Artur Barseghyan'
+__license__ = 'GPL-2.0-only OR LGPL-2.1-or-later'
+__all__ = [
+ 'LOOSE_DJANGO_VERSION', 'LOOSE_DJANGO_MINOR_VERSION',
+]
+
+LOOSE_DJANGO_VERSION = LooseVersion(django.get_version())
+LOOSE_DJANGO_MINOR_VERSION = LooseVersion(
+ '.'.join([str(i) for i in LOOSE_DJANGO_VERSION.version[0:2]])
+)
+
+# Loose versions
+LOOSE_VERSIONS = (
+ '1.4', '1.5', '1.6', '1.7', '1.8', '1.9', '1.10', '1.11', '2.0', '2.1',
+ '2.2', '3.0'
+)
+
+for v in LOOSE_VERSIONS:
+ var_name = 'LOOSE_VERSION_{0}'.format(v.replace('.', '_'))
+ globals()[var_name] = LooseVersion(v)
+ __all__.append(var_name)
+
+# Exact versions
+EXACT_VERSIONS = LOOSE_VERSIONS[:-1]
+
+for i, v in enumerate(EXACT_VERSIONS):
+ l_cur = globals()['LOOSE_VERSION_{0}'
+ ''.format(LOOSE_VERSIONS[i].replace('.', '_'))]
+ l_nxt = globals()['LOOSE_VERSION_{0}'
+ ''.format(LOOSE_VERSIONS[i+1].replace('.', '_'))]
+ var_name = 'DJANGO_{0}'.format(v.replace('.', '_'))
+ globals()[var_name] = (l_cur <= LOOSE_DJANGO_VERSION < l_nxt)
+ __all__.append(var_name)
+
+# LTE list
+LTE_VERSIONS = LOOSE_VERSIONS[:-1]
+
+for i, v in enumerate(EXACT_VERSIONS):
+ l_cur = globals()['LOOSE_VERSION_{0}'
+ ''.format(LOOSE_VERSIONS[i].replace('.', '_'))]
+ var_name = 'DJANGO_LTE_{0}'.format(v.replace('.', '_'))
+ globals()[var_name] = (LOOSE_DJANGO_MINOR_VERSION <= l_cur)
+ __all__.append(var_name)
+
+# GTE list
+GTE_VERSIONS = LOOSE_VERSIONS[:-1]
+
+for i, v in enumerate(EXACT_VERSIONS):
+ l_cur = globals()['LOOSE_VERSION_{0}'
+ ''.format(LOOSE_VERSIONS[i].replace('.', '_'))]
+ var_name = 'DJANGO_GTE_{0}'.format(v.replace('.', '_'))
+ globals()[var_name] = (
+ LOOSE_DJANGO_MINOR_VERSION >= l_cur
+ )
+ __all__.append(var_name)
+
+__all__ = tuple(__all__)
+
+# Clean up
+try:
+ del l_cur
+ del l_nxt
+ del var_name
+ del i
+ del v
+except NameError:
+ pass
+
+del LooseVersion
+del django
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/django_nine.egg-info/PKG-INFO new/django-nine-0.2.2/src/django_nine.egg-info/PKG-INFO
--- old/django-nine-0.1.13/src/django_nine.egg-info/PKG-INFO 2017-05-16 22:28:17.000000000 +0200
+++ new/django-nine-0.2.2/src/django_nine.egg-info/PKG-INFO 2019-05-19 19:16:50.000000000 +0200
@@ -1,20 +1,32 @@
Metadata-Version: 1.1
Name: django-nine
-Version: 0.1.13
-Summary: Compatibility library for Django.
+Version: 0.2.2
+Summary: Version checking library.
Home-page: https://github.com/barseghyanartur/django-nine/
Author: Artur Barseghyan
Author-email: artur.barseghyan(a)gmail.com
-License: GPL 2.0/LGPL 2.1
+License: GPL-2.0-only OR LGPL-2.1-or-later
Description: ===========
django-nine
===========
- `django-nine` - compatibility library for Django.
+ `django-nine` - version checking library for Django.
+
+ .. image:: https://img.shields.io/pypi/v/django-nine.svg
+ :target: https://pypi.python.org/pypi/django-nine
+ :alt: PyPI Version
+
+ .. image:: https://img.shields.io/travis/barseghyanartur/django-nine/master.svg
+ :target: http://travis-ci.org/barseghyanartur/django-nine
+ :alt: Build Status
+
+ .. image:: https://img.shields.io/badge/license-GPL--2.0--only%20OR%20LGPL--2.1--or--l…
+ :target: https://github.com/barseghyanartur/django-nine/#License
+ :alt: GPL-2.0-only OR LGPL-2.1-or-later
Prerequisites
=============
- - Python 2.6, 2.7, 3.4, 3.5 and 3.6.
- - Django 1.5, 1.6, 1.7, 1.8, 1.9, 1.10 and 1.11.
+ - Python 2.6, 2.7, 3.4, 3.5, 3.6 and 3.7.
+ - Django 1.5, 1.6, 1.7, 1.8, 1.9, 1.10, 1.11, 2.0, 2.1 and 2.2.
Installation
============
@@ -47,7 +59,7 @@
.. code-block:: python
- from nine import versions
+ from django_nine import versions
versions.DJANGO_1_7 # True
versions.DJANGO_LTE_1_7 # True
@@ -65,21 +77,13 @@
.. code-block:: python
TEMPLATES[0]['OPTIONS']['context_processors'] += \
- ['nine.context_processors.versions']
+ ['django_nine.context_processors.versions']
Or if you are using an old version of Django:
.. code-block:: python
- TEMPLATE_CONTEXT_PROCESSORS += ['nine.context_processors.versions']
-
- Import User model
- -----------------
- Or you could safely import the user model as follows:
-
- .. code-block:: python
-
- from nine.user import User
+ TEMPLATE_CONTEXT_PROCESSORS += ['django_nine.context_processors.versions']
Testing
=======
@@ -99,7 +103,7 @@
.. code-block:: sh
- tox -e py35
+ tox -e py37
Or run Django tests:
@@ -109,7 +113,7 @@
License
=======
- GPL 2.0/LGPL 2.1
+ GPL-2.0-only OR LGPL-2.1-or-later
Support
=======
@@ -128,6 +132,7 @@
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Environment :: Web Environment
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/django_nine.egg-info/SOURCES.txt new/django-nine-0.2.2/src/django_nine.egg-info/SOURCES.txt
--- old/django-nine-0.1.13/src/django_nine.egg-info/SOURCES.txt 2017-05-16 22:28:17.000000000 +0200
+++ new/django-nine-0.2.2/src/django_nine.egg-info/SOURCES.txt 2019-05-19 19:16:50.000000000 +0200
@@ -5,15 +5,18 @@
README.rst
setup.cfg
setup.py
+src/django_nine/__init__.py
+src/django_nine/context_processors.py
+src/django_nine/models.py
+src/django_nine/user.py
+src/django_nine/versions.py
src/django_nine.egg-info/PKG-INFO
src/django_nine.egg-info/SOURCES.txt
src/django_nine.egg-info/dependency_links.txt
src/django_nine.egg-info/top_level.txt
+src/django_nine/tests/__init__.py
+src/django_nine/tests/base.py
+src/django_nine/tests/test_versions.py
src/nine/__init__.py
-src/nine/context_processors.py
-src/nine/models.py
src/nine/user.py
-src/nine/versions.py
-src/nine/tests/__init__.py
-src/nine/tests/base.py
-src/nine/tests/test_versions.py
\ No newline at end of file
+src/nine/versions.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/django_nine.egg-info/top_level.txt new/django-nine-0.2.2/src/django_nine.egg-info/top_level.txt
--- old/django-nine-0.1.13/src/django_nine.egg-info/top_level.txt 2017-05-16 22:28:17.000000000 +0200
+++ new/django-nine-0.2.2/src/django_nine.egg-info/top_level.txt 2019-05-19 19:16:50.000000000 +0200
@@ -1 +1,2 @@
+django_nine
nine
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/nine/__init__.py new/django-nine-0.2.2/src/nine/__init__.py
--- old/django-nine-0.1.13/src/nine/__init__.py 2017-05-16 22:25:52.000000000 +0200
+++ new/django-nine-0.2.2/src/nine/__init__.py 2019-05-19 19:14:57.000000000 +0200
@@ -1,6 +1,9 @@
-__title__ = 'django-nine'
-__version__ = '0.1.13'
-__build__ = 0x00000e
-__author__ = 'Artur Barseghyan <artur.barseghyan(a)gmail.com>'
-__copyright__ = '2015-2017 Artur Barseghyan'
-__license__ = 'GPL 2.0/LGPL 2.1'
+import warnings
+
+from django_nine import versions # NOQA
+from django_nine import context_processors # NOQA
+
+warnings.warn(
+ "The `nine` namespace is deprecated, use `django_nine` instead.",
+ DeprecationWarning
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/nine/context_processors.py new/django-nine-0.2.2/src/nine/context_processors.py
--- old/django-nine-0.1.13/src/nine/context_processors.py 2017-05-16 22:20:35.000000000 +0200
+++ new/django-nine-0.2.2/src/nine/context_processors.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,18 +0,0 @@
-from nine import versions as nine_versions
-
-__title__ = 'nine.versions'
-__author__ = 'Artur Barseghyan <artur.barseghyan(a)gmail.com>'
-__copyright__ = 'Copyright (c) 2015-2017 Artur Barseghyan'
-__license__ = 'GPL 2.0/LGPL 2.1'
-__all__ = [
- 'versions',
-]
-
-
-def versions(request):
- """Get active theme.
-
- :param django.http.HttpRequest request:
- :return dict:
- """
- return {'VERSIONS': nine_versions}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/nine/tests/__init__.py new/django-nine-0.2.2/src/nine/tests/__init__.py
--- old/django-nine-0.1.13/src/nine/tests/__init__.py 2015-08-24 23:18:14.000000000 +0200
+++ new/django-nine-0.2.2/src/nine/tests/__init__.py 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-from .test_versions import *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/nine/tests/base.py new/django-nine-0.2.2/src/nine/tests/base.py
--- old/django-nine-0.1.13/src/nine/tests/base.py 2017-02-09 22:54:43.000000000 +0100
+++ new/django-nine-0.2.2/src/nine/tests/base.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-import logging
-
-__title__ = 'nine.tests.base'
-__author__ = 'Artur Barseghyan'
-__copyright__ = 'Copyright (c) 2015-2017 Artur Barseghyan'
-__license__ = 'GPL 2.0/LGPL 2.1'
-__all__ = (
- 'LOG_INFO',
- 'log_info',
-)
-
-
-logger = logging.getLogger(__name__)
-
-LOG_INFO = True
-
-
-def log_info(func):
- """Logs some useful info."""
- if not LOG_INFO:
- return func
-
- def inner(self, *args, **kwargs):
- result = func(self, *args, **kwargs)
-
- logger.info('\n\n%s' % func.__name__)
- logger.info('============================')
- if func.__doc__:
- logger.info('""" %s """' % func.__doc__.strip())
- logger.info('----------------------------')
- if result is not None:
- logger.info(result)
- logger.info('\n++++++++++++++++++++++++++++')
-
- return result
- return inner
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/nine/tests/test_versions.py new/django-nine-0.2.2/src/nine/tests/test_versions.py
--- old/django-nine-0.1.13/src/nine/tests/test_versions.py 2016-11-30 23:12:59.000000000 +0100
+++ new/django-nine-0.2.2/src/nine/tests/test_versions.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,233 +0,0 @@
-import unittest
-import mock
-# For Python3 >= 3.4
-try:
- from importlib import reload
-# For Python3 < 3.4
-except ImportError as err:
- try:
- from imp import reload
- except ImportError as err:
- pass
-
-import django
-
-from .base import log_info
-
-__title__ = 'nine.tests.test_versions'
-__author__ = 'Artur Barseghyan'
-__copyright__ = 'Copyright (c) 2015 Artur Barseghyan'
-__license__ = 'GPL 2.0/LGPL 2.1'
-__all__ = ('VersionsTest',)
-
-
-class VersionsTest(unittest.TestCase):
- """
- Tests of ``nine.versions`` module.
- """
- def setUp(self):
- pass
-
- @log_info
- @mock.patch('django.get_version', mock.MagicMock(return_value='1.4.21'))
- def test_django_1_4_21(self):
- """
- Tests as if we were using Django==1.4.21.
- """
- from nine import versions
- reload(versions)
-
- # Exact version matching
- self.assertTrue(versions.DJANGO_1_4)
- self.assertTrue(not versions.DJANGO_1_5)
- self.assertTrue(not versions.DJANGO_1_6)
- self.assertTrue(not versions.DJANGO_1_7)
- self.assertTrue(not versions.DJANGO_1_8)
- self.assertTrue(not versions.DJANGO_1_9)
-
- # Less than or equal matching
- self.assertTrue(versions.DJANGO_LTE_1_4)
- self.assertTrue(versions.DJANGO_LTE_1_5)
- self.assertTrue(versions.DJANGO_LTE_1_6)
- self.assertTrue(versions.DJANGO_LTE_1_7)
- self.assertTrue(versions.DJANGO_LTE_1_8)
- self.assertTrue(versions.DJANGO_LTE_1_9)
-
- # Greater than or equal matching
- self.assertTrue(versions.DJANGO_GTE_1_4)
- self.assertTrue(not versions.DJANGO_GTE_1_5)
- self.assertTrue(not versions.DJANGO_GTE_1_6)
- self.assertTrue(not versions.DJANGO_GTE_1_7)
- self.assertTrue(not versions.DJANGO_GTE_1_8)
- self.assertTrue(not versions.DJANGO_GTE_1_9)
-
- @log_info
- @mock.patch('django.get_version', mock.MagicMock(return_value='1.5.5'))
- def test_django_1_5_5(self):
- """
- Tests as if we were using Django==1.5.5.
- """
- from nine import versions
- reload(versions)
-
- # Exact version matching
- self.assertTrue(not versions.DJANGO_1_4)
- self.assertTrue(versions.DJANGO_1_5)
- self.assertTrue(not versions.DJANGO_1_6)
- self.assertTrue(not versions.DJANGO_1_7)
- self.assertTrue(not versions.DJANGO_1_8)
- self.assertTrue(not versions.DJANGO_1_9)
-
- # Less than or equal matching
- self.assertTrue(not versions.DJANGO_LTE_1_4)
- self.assertTrue(versions.DJANGO_LTE_1_5)
- self.assertTrue(versions.DJANGO_LTE_1_6)
- self.assertTrue(versions.DJANGO_LTE_1_7)
- self.assertTrue(versions.DJANGO_LTE_1_8)
- self.assertTrue(versions.DJANGO_LTE_1_9)
-
- # Greater than or equal matching
- self.assertTrue(versions.DJANGO_GTE_1_4)
- self.assertTrue(versions.DJANGO_GTE_1_5)
- self.assertTrue(not versions.DJANGO_GTE_1_6)
- self.assertTrue(not versions.DJANGO_GTE_1_7)
- self.assertTrue(not versions.DJANGO_GTE_1_8)
- self.assertTrue(not versions.DJANGO_GTE_1_9)
-
- @log_info
- @mock.patch('django.get_version', mock.MagicMock(return_value='1.6.5'))
- def test_django_1_6_5(self):
- """
- Tests as if we were using Django==1.6.5.
- """
- from nine import versions
- reload(versions)
-
- # Exact version matching
- self.assertTrue(not versions.DJANGO_1_4)
- self.assertTrue(not versions.DJANGO_1_5)
- self.assertTrue(versions.DJANGO_1_6)
- self.assertTrue(not versions.DJANGO_1_7)
- self.assertTrue(not versions.DJANGO_1_8)
- self.assertTrue(not versions.DJANGO_1_9)
-
- # Less than or equal matching
- self.assertTrue(not versions.DJANGO_LTE_1_4)
- self.assertTrue(not versions.DJANGO_LTE_1_5)
- self.assertTrue(versions.DJANGO_LTE_1_6)
- self.assertTrue(versions.DJANGO_LTE_1_7)
- self.assertTrue(versions.DJANGO_LTE_1_8)
- self.assertTrue(versions.DJANGO_LTE_1_9)
-
- # Greater than or equal matching
- self.assertTrue(versions.DJANGO_GTE_1_4)
- self.assertTrue(versions.DJANGO_GTE_1_5)
- self.assertTrue(versions.DJANGO_GTE_1_6)
- self.assertTrue(not versions.DJANGO_GTE_1_7)
- self.assertTrue(not versions.DJANGO_GTE_1_8)
- self.assertTrue(not versions.DJANGO_GTE_1_9)
-
- @log_info
- @mock.patch('django.get_version', mock.MagicMock(return_value='1.7.5'))
- def test_django_1_7_5(self):
- """
- Tests as if we were using Django==1.7.5.
- """
- from nine import versions
- reload(versions)
-
- # Exact version matching
- self.assertTrue(not versions.DJANGO_1_4)
- self.assertTrue(not versions.DJANGO_1_5)
- self.assertTrue(not versions.DJANGO_1_6)
- self.assertTrue(versions.DJANGO_1_7)
- self.assertTrue(not versions.DJANGO_1_8)
- self.assertTrue(not versions.DJANGO_1_9)
-
- # Less than or equal matching
- self.assertTrue(not versions.DJANGO_LTE_1_4)
- self.assertTrue(not versions.DJANGO_LTE_1_5)
- self.assertTrue(not versions.DJANGO_LTE_1_6)
- self.assertTrue(versions.DJANGO_LTE_1_7)
- self.assertTrue(versions.DJANGO_LTE_1_8)
- self.assertTrue(versions.DJANGO_LTE_1_9)
-
- # Greater than or equal matching
- self.assertTrue(versions.DJANGO_GTE_1_4)
- self.assertTrue(versions.DJANGO_GTE_1_5)
- self.assertTrue(versions.DJANGO_GTE_1_6)
- self.assertTrue(versions.DJANGO_GTE_1_7)
- self.assertTrue(not versions.DJANGO_GTE_1_8)
- self.assertTrue(not versions.DJANGO_GTE_1_9)
-
- @log_info
- @mock.patch('django.get_version', mock.MagicMock(return_value='1.8.a1'))
- def test_django_1_8_a1(self):
- """
- Tests as if we were using Django==1.8.a1.
- """
- from nine import versions
- reload(versions)
-
- # Exact version matching
- self.assertTrue(not versions.DJANGO_1_4)
- self.assertTrue(not versions.DJANGO_1_5)
- self.assertTrue(not versions.DJANGO_1_6)
- self.assertTrue(not versions.DJANGO_1_7)
- self.assertTrue(versions.DJANGO_1_8)
- self.assertTrue(not versions.DJANGO_1_9)
-
- # Less than or equal matching
- self.assertTrue(not versions.DJANGO_LTE_1_4)
- self.assertTrue(not versions.DJANGO_LTE_1_5)
- self.assertTrue(not versions.DJANGO_LTE_1_6)
- self.assertTrue(not versions.DJANGO_LTE_1_7)
- self.assertTrue(versions.DJANGO_LTE_1_8)
- self.assertTrue(versions.DJANGO_LTE_1_9)
-
- # Greater than or equal matching
- self.assertTrue(versions.DJANGO_GTE_1_4)
- self.assertTrue(versions.DJANGO_GTE_1_5)
- self.assertTrue(versions.DJANGO_GTE_1_6)
- self.assertTrue(versions.DJANGO_GTE_1_7)
- self.assertTrue(versions.DJANGO_GTE_1_8)
- self.assertTrue(not versions.DJANGO_GTE_1_9)
-
- @log_info
- @mock.patch('django.get_version', mock.MagicMock(return_value='1.10'))
- def test_django_1_10(self):
- """
- Tests as if we were using Django==1.10.
- """
- from nine import versions
- reload(versions)
-
- # Exact version matching
- self.assertTrue(not versions.DJANGO_1_4)
- self.assertTrue(not versions.DJANGO_1_5)
- self.assertTrue(not versions.DJANGO_1_6)
- self.assertTrue(not versions.DJANGO_1_7)
- self.assertTrue(not versions.DJANGO_1_8)
- self.assertTrue(not versions.DJANGO_1_9)
- self.assertTrue(versions.DJANGO_1_10)
-
- # Less than or equal matching
- self.assertTrue(not versions.DJANGO_LTE_1_4)
- self.assertTrue(not versions.DJANGO_LTE_1_5)
- self.assertTrue(not versions.DJANGO_LTE_1_6)
- self.assertTrue(not versions.DJANGO_LTE_1_7)
- self.assertTrue(not versions.DJANGO_LTE_1_8)
- self.assertTrue(not versions.DJANGO_LTE_1_9)
-
- # Greater than or equal matching
- self.assertTrue(versions.DJANGO_GTE_1_4)
- self.assertTrue(versions.DJANGO_GTE_1_5)
- self.assertTrue(versions.DJANGO_GTE_1_6)
- self.assertTrue(versions.DJANGO_GTE_1_7)
- self.assertTrue(versions.DJANGO_GTE_1_8)
- self.assertTrue(versions.DJANGO_GTE_1_9)
- self.assertTrue(versions.DJANGO_GTE_1_10)
-
-
-if __name__ == "__main__":
- unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/nine/user.py new/django-nine-0.2.2/src/nine/user.py
--- old/django-nine-0.1.13/src/nine/user.py 2017-02-09 22:54:43.000000000 +0100
+++ new/django-nine-0.2.2/src/nine/user.py 2019-05-19 19:14:45.000000000 +0200
@@ -1,43 +1,15 @@
-"""
-Compatibility module for safe and sane User model import.
-"""
+import warnings
-import importlib
+from django_nine.user import * # NOQA
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from .versions import DJANGO_LTE_1_4, DJANGO_LTE_1_6, DJANGO_GTE_1_7
+warnings.warn(
+ "The `nine` namespace is deprecated, use `django_nine` instead.",
+ DeprecationWarning
+)
-if DJANGO_LTE_1_4:
- from django.contrib.auth.models import User
-else:
- # Cannot use contrib.auth.get_user_model() at compile time.
- user_app_name, user_model_name = settings.AUTH_USER_MODEL.rsplit('.', 1)
- User = None
-
- if DJANGO_LTE_1_6:
- for app in settings.INSTALLED_APPS:
- if app.endswith(user_app_name):
- user_app_models = importlib.import_module(app + ".models")
- User = getattr(user_app_models, user_model_name)
- break
- elif DJANGO_GTE_1_7:
- from django.apps import apps
- try:
- User = apps.get_registered_model(user_app_name, user_model_name)
- except KeyError:
- pass
-
- if User is None:
- raise ImproperlyConfigured(
- "You have defined a custom user model {0}, but the app {1} is "
- "not in ``settings.INSTALLED_APPS``"
- "".format(settings.AUTH_USER_MODEL, user_app_name)
- )
-
-__title__ = 'nine.user'
-__author__ = 'Artur Barseghyan <artur.barseghyan(a)gmail.com>'
-__copyright__ = 'Copyright (c) 2015-2017 Artur Barseghyan'
-__license__ = 'GPL 2.0/LGPL 2.1'
-__all__ = ('User',)
+warnings.warn(
+ "The `django_nine.user` module is deprecated and will be removed in "
+ "version 0.3.",
+ DeprecationWarning
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-nine-0.1.13/src/nine/versions.py new/django-nine-0.2.2/src/nine/versions.py
--- old/django-nine-0.1.13/src/nine/versions.py 2017-02-09 22:54:43.000000000 +0100
+++ new/django-nine-0.2.2/src/nine/versions.py 2019-05-19 19:14:37.000000000 +0200
@@ -1,81 +1,8 @@
-"""
-Contains information about the current Django version in use, including (LTE
-and GTE).
-"""
+import warnings
-from distutils.version import LooseVersion
+from django_nine.versions import * # NOQA
-import django
-
-__title__ = 'nine.versions'
-__author__ = 'Artur Barseghyan <artur.barseghyan(a)gmail.com>'
-__copyright__ = 'Copyright (c) 2015-2017 Artur Barseghyan'
-__license__ = 'GPL 2.0/LGPL 2.1'
-__all__ = [
- 'LOOSE_DJANGO_VERSION', 'LOOSE_DJANGO_MINOR_VERSION',
-]
-
-LOOSE_DJANGO_VERSION = LooseVersion(django.get_version())
-LOOSE_DJANGO_MINOR_VERSION = LooseVersion(
- '.'.join([str(i) for i in LOOSE_DJANGO_VERSION.version[0:2]])
-)
-
-# Loose versions
-LOOSE_VERSIONS = (
- '1.4', '1.5', '1.6', '1.7', '1.8', '1.9', '1.10', '1.11', '2.0', '2.1',
- '2.2', '3.0'
+warnings.warn(
+ "The `nine` namespace is deprecated, use `django_nine` instead.",
+ DeprecationWarning
)
-
-for v in LOOSE_VERSIONS:
- var_name = 'LOOSE_VERSION_{0}'.format(v.replace('.', '_'))
- globals()[var_name] = LooseVersion(v)
- __all__.append(var_name)
-
-# Exact versions
-EXACT_VERSIONS = LOOSE_VERSIONS[:-1]
-
-for i, v in enumerate(EXACT_VERSIONS):
- l_cur = globals()['LOOSE_VERSION_{0}'
- ''.format(LOOSE_VERSIONS[i].replace('.', '_'))]
- l_nxt = globals()['LOOSE_VERSION_{0}'
- ''.format(LOOSE_VERSIONS[i+1].replace('.', '_'))]
- var_name = 'DJANGO_{0}'.format(v.replace('.', '_'))
- globals()[var_name] = (l_cur <= LOOSE_DJANGO_VERSION < l_nxt)
- __all__.append(var_name)
-
-# LTE list
-LTE_VERSIONS = LOOSE_VERSIONS[:-1]
-
-for i, v in enumerate(EXACT_VERSIONS):
- l_cur = globals()['LOOSE_VERSION_{0}'
- ''.format(LOOSE_VERSIONS[i].replace('.', '_'))]
- var_name = 'DJANGO_LTE_{0}'.format(v.replace('.', '_'))
- globals()[var_name] = (LOOSE_DJANGO_MINOR_VERSION <= l_cur)
- __all__.append(var_name)
-
-# GTE list
-GTE_VERSIONS = LOOSE_VERSIONS[:-1]
-
-for i, v in enumerate(EXACT_VERSIONS):
- l_cur = globals()['LOOSE_VERSION_{0}'
- ''.format(LOOSE_VERSIONS[i].replace('.', '_'))]
- var_name = 'DJANGO_GTE_{0}'.format(v.replace('.', '_'))
- globals()[var_name] = (
- LOOSE_DJANGO_MINOR_VERSION >= l_cur
- )
- __all__.append(var_name)
-
-__all__ = tuple(__all__)
-
-# Clean up
-try:
- del l_cur
- del l_nxt
- del var_name
- del i
- del v
-except NameError:
- pass
-
-del LooseVersion
-del django
1
0
Hello community,
here is the log from the commit of package python-moksha-hub for openSUSE:Factory checked in at 2019-05-22 15:41:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-moksha-hub (Old)
and /work/SRC/openSUSE:Factory/.python-moksha-hub.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-moksha-hub"
Wed May 22 15:41:16 2019 rev:3 rq:704706 version:1.5.17
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-moksha-hub/python-moksha-hub.changes 2018-12-24 11:39:52.801532605 +0100
+++ /work/SRC/openSUSE:Factory/.python-moksha-hub.new.5148/python-moksha-hub.changes 2019-05-22 15:42:04.978427044 +0200
@@ -1,0 +2,7 @@
+Wed May 22 05:37:00 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 1.5.17
+ * no upstream changelog
+- run tests
+
+-------------------------------------------------------------------
Old:
----
moksha.hub-1.5.3.tar.gz
New:
----
moksha.hub-1.5.17.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-moksha-hub.spec ++++++
--- /var/tmp/diff_new_pack.RVlACr/_old 2019-05-22 15:42:06.646427036 +0200
+++ /var/tmp/diff_new_pack.RVlACr/_new 2019-05-22 15:42:06.650427036 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-moksha-hub
#
-# Copyright (c) 2018 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
@@ -17,16 +17,23 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%bcond_with test
Name: python-moksha-hub
-Version: 1.5.3
+Version: 1.5.17
Release: 0
Summary: Hub components for Moksha
License: Apache-2.0
Group: Development/Languages/Python
URL: https://mokshaproject.net
Source: https://files.pythonhosted.org/packages/source/m/moksha.hub/moksha.hub-%{ve…
+BuildRequires: %{python_module Twisted}
+BuildRequires: %{python_module mock}
+BuildRequires: %{python_module moksha-common >= 1.0.6}
+BuildRequires: %{python_module nose}
+BuildRequires: %{python_module pyzmq}
BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module txWS}
+BuildRequires: %{python_module txZMQ}
+BuildRequires: %{python_module websocket-client}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-Twisted
@@ -35,16 +42,6 @@
Requires: python-txWS
Requires: python-txZMQ
BuildArch: noarch
-%if %{with test}
-BuildRequires: %{python_module Twisted}
-BuildRequires: %{python_module mock}
-BuildRequires: %{python_module moksha-common >= 1.0.6}
-BuildRequires: %{python_module nose}
-BuildRequires: %{python_module pyzmq}
-BuildRequires: %{python_module txWS}
-BuildRequires: %{python_module txZMQ}
-BuildRequires: %{python_module websocket-client}
-%endif
%python_subpackages
%description
@@ -59,10 +56,9 @@
%install
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
-%if %{with test}
+
%check
%python_exec setup.py test
-%endif
%files %{python_files}
%license COPYING
++++++ moksha.hub-1.5.3.tar.gz -> moksha.hub-1.5.17.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/PKG-INFO new/moksha.hub-1.5.17/PKG-INFO
--- old/moksha.hub-1.5.3/PKG-INFO 2017-07-11 17:08:34.000000000 +0200
+++ new/moksha.hub-1.5.17/PKG-INFO 2019-02-12 06:20:18.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: moksha.hub
-Version: 1.5.3
+Version: 1.5.17
Summary: Hub components for Moksha.
Home-page: https://mokshaproject.net
Author: Luke Macken, John (J5) Palmieri, Mairin Duffy, and Ralph Bean
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/moksha/hub/api/consumer.py new/moksha.hub-1.5.17/moksha/hub/api/consumer.py
--- old/moksha.hub-1.5.3/moksha/hub/api/consumer.py 2017-07-11 17:08:16.000000000 +0200
+++ new/moksha.hub-1.5.17/moksha/hub/api/consumer.py 2018-09-24 18:14:16.000000000 +0200
@@ -33,6 +33,7 @@
log = logging.getLogger('moksha.hub')
import six.moves.queue as queue
+from collections import deque
from kitchen.iterutils import iterate
from moksha.common.lib.helpers import create_app_engine
@@ -60,7 +61,7 @@
# the queue to do "consume" work.
self.incoming = queue.Queue()
self.headcount_in = self.headcount_out = 0
- self._times = []
+ self._times = deque(maxlen=1024)
callback = self._consume
if self.jsonify:
@@ -99,7 +100,7 @@
backlog = self.incoming.qsize()
headcount_out = self.headcount_out
headcount_in = self.headcount_in
- times = self._times
+ times = list(self._times)
else:
backlog = None
headcount_out = headcount_in = 0
@@ -120,7 +121,7 @@
# Reset these counters before returning.
self.headcount_out = self.headcount_in = 0
self._exception_count = 0
- self._times = []
+ self._times.clear()
return results
def debug(self, message):
@@ -218,7 +219,7 @@
# Record how long it took to process this message (for stats)
self._times.append(time.time() - start)
- self.debug("Going back to waiting on the incoming queue.")
+ self.debug("Going back to waiting on the incoming queue. Message handled: %r" % handled)
return handled
def validate(self, message):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/moksha/hub/api/producer.py new/moksha.hub-1.5.17/moksha/hub/api/producer.py
--- old/moksha.hub-1.5.3/moksha/hub/api/producer.py 2014-10-20 18:51:21.000000000 +0200
+++ new/moksha.hub-1.5.17/moksha/hub/api/producer.py 2019-01-10 19:15:08.000000000 +0100
@@ -92,6 +92,10 @@
(self.frequency.microseconds / 1000000.0)
self._last_ran = None
+ # This is used to determine if the configured frequency has been meet,
+ # and the poller should run. This allows the poller to check if
+ # self.die is True more frequently.
+ self._until_next_poll = self.frequency
log.debug("Setting a %s second timer" % self.frequency)
moksha.hub.reactor.reactor.callInThread(self._work)
@@ -125,8 +129,27 @@
self._poll()
while not self.die:
- time.sleep(self.frequency)
- self._poll()
+ if not self.frequency:
+ # If no frequency is set, just continuously poll
+ self._poll()
+ continue
+
+ # If _until_next_poll is less than or equal to 0, that means
+ # the frequency has been met and the poller needs to run again
+ if self._until_next_poll <= 0:
+ self._poll()
+ # Reset _until_next_poll so that polling doesn't happen
+ # until the frequency is met again
+ self._until_next_poll = self.frequency
+ else:
+ # Only sleep 5 seconds (or _until_next_poll if it's shorter) at
+ # a time since we want to check if the poller should die
+ # frequently. Otherwise, you'll end up with Moksha Hub in a
+ # state where the hub is stopped but the poller is still
+ # sleeping until the frequency is met
+ sleep_time = min((5, self._until_next_poll))
+ time.sleep(sleep_time)
+ self._until_next_poll -= sleep_time
def stop(self):
super(PollingProducer, self).stop()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/moksha/hub/hub.py new/moksha.hub-1.5.17/moksha/hub/hub.py
--- old/moksha.hub-1.5.3/moksha/hub/hub.py 2017-06-26 18:02:14.000000000 +0200
+++ new/moksha.hub-1.5.17/moksha/hub/hub.py 2018-09-24 18:14:16.000000000 +0200
@@ -223,9 +223,12 @@
# FIXME: only do this if the consumer wants it `jsonified`
try:
- body = JSON.loads(message['body'])
+ if message['body']:
+ body = JSON.loads(message['body'])
+ else:
+ body = {}
except Exception as e:
- log.warning('Cannot decode message from JSON: %s' % e)
+ log.warning('Cannot decode body from JSON: %s -> %r' % (e, message))
#body = {}
body = message['body']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/moksha/hub/monitoring.py new/moksha.hub-1.5.17/moksha/hub/monitoring.py
--- old/moksha.hub-1.5.3/moksha/hub/monitoring.py 2014-10-20 18:51:21.000000000 +0200
+++ new/moksha.hub-1.5.17/moksha/hub/monitoring.py 2018-09-24 18:14:16.000000000 +0200
@@ -51,7 +51,7 @@
# to us.
mode = hub.config.get('moksha.monitoring.socket.mode')
if endpoint.startswith("ipc://") and mode:
- mode = string.atoi(mode, base=8)
+ mode = int(mode, base=8)
path = endpoint.split("ipc://")[-1]
os.chmod(path, mode)
@@ -72,7 +72,7 @@
"producers": self.serialize(self.hub.producers),
}
if self.socket:
- self.socket.send(json.dumps(data))
+ self.socket.send_string(json.dumps(data))
def stop(self):
super(MonitoringProducer, self).stop()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/moksha/hub/stomp/protocol.py new/moksha.hub-1.5.17/moksha/hub/stomp/protocol.py
--- old/moksha.hub-1.5.3/moksha/hub/stomp/protocol.py 2017-06-26 17:56:51.000000000 +0200
+++ new/moksha.hub-1.5.17/moksha/hub/stomp/protocol.py 2019-02-12 06:19:48.000000000 +0100
@@ -21,6 +21,10 @@
import logging
+from distutils.version import LooseVersion
+
+from moksha.common.lib.converters import asbool
+from moksha.hub.reactor import reactor
try:
# stomper is not ready for py3
@@ -78,7 +82,7 @@
f.headers.update(headers)
cmd = f.pack()
log.debug(cmd)
- self.transport.write(cmd)
+ self.transport.write(cmd.encode('utf-8'))
def connectionMade(self):
""" Register with stomp server """
@@ -91,8 +95,14 @@
else:
cmd = stomper.connect(self.username, self.password)
log.debug(cmd)
- self.transport.write(cmd)
+ self.transport.write(cmd.encode('utf-8'))
+ def error(self, msg):
+ """ Extend stomper's own error method to kill the hub. """
+ super(StompProtocol, self).error(msg)
+ log.error("Requesting shutdown of hub for STOMP error.")
+ reactor.callLater(0, self.client.hub.close)
+ reactor.callLater(0, reactor.stop)
def ack(self, msg):
""" Override stomper's own ack to be smarter, based on mode. """
@@ -108,7 +118,7 @@
def dataReceived(self, data):
"""Data received, react to it and respond if needed """
- self.buffer.appendData(data)
+ self.buffer.appendData(data.decode('utf-8', errors='replace'))
while True:
msg = self.buffer.getOneMessage()
if msg is None:
@@ -127,7 +137,15 @@
# Otherwise, see if we need to turn a naive 'ack' from stomper into
# a 'nack' if our consumers failed to do their jobs.
if handled is False and response.startswith("ACK\n"):
- if stomper.STOMP_VERSION != '1.1':
+
+ send_nacks = asbool(self.client.hub.config.get('stomp_send_explicit_nacks', True))
+ if not send_nacks:
+ log.warn("Message handling failed. stomp_send_explicit_nacks=%r. "
+ "Sending no reply to the broker.", send_nacks)
+ # Return, so as not to send an erroneous ack.
+ return
+
+ if LooseVersion(stomper.STOMP_VERSION) < LooseVersion('1.1'):
log.error("Unable to NACK stomp %r" % stomper.STOMP_VERSION)
# Also, not sending an erroneous ack.
return
@@ -135,8 +153,11 @@
message_id = msg['headers']['message-id']
subscription = msg['headers']['subscription']
transaction_id = msg['headers'].get('transaction-id')
- response = stomper.stomp_11.nack(message_id, subscription, transaction_id)
+ response = stomper.nack(message_id, subscription, transaction_id)
# Finally, send our response (ACK or NACK) back to the broker.
- log.debug(response)
- self.transport.write(response)
+ if not handled:
+ log.warn("handled=%r. Responding with %s" % (handled, response))
+ else:
+ log.debug("handled=%r. Responding with %s" % (handled, response))
+ self.transport.write(response.encode('utf-8'))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/moksha/hub/stomp/stomp.py new/moksha.hub-1.5.17/moksha/hub/stomp/stomp.py
--- old/moksha.hub-1.5.3/moksha/hub/stomp/stomp.py 2016-11-10 15:43:34.000000000 +0100
+++ new/moksha.hub-1.5.17/moksha/hub/stomp/stomp.py 2019-02-06 23:08:37.000000000 +0100
@@ -28,6 +28,7 @@
import logging
+import six
from twisted.internet.protocol import ClientFactory
from moksha.hub.stomp.protocol import StompProtocol
@@ -46,7 +47,7 @@
def __init__(self, hub, config):
self.config = config
self.hub = hub
- self._topics = hub.topics.keys()
+ self._topics = list(hub.topics.keys())
self._frames = []
uri = self.config.get('stomp_uri', None)
@@ -55,16 +56,6 @@
host = self.config.get('stomp_broker')
uri = "%s:%i" % (host, port)
- # Sometimes, a stomp consumer may wish to be subscribed to a queue
- # which is composed of messages from many different topics. In this
- # case, the hub hands dispatching messages to the right consumers.
- # This extension is only concerned with the queue, and negotiating that
- # with the broker.
- stomp_queue = self.config.get('stomp_queue', None)
- if stomp_queue:
- # Overwrite the declarations of all of our consumers.
- self._topics = [stomp_queue]
-
# A list of addresses over which we emulate failover()
self.addresses = [pair.split(":") for pair in uri.split(',')]
self.address_index = 0
@@ -96,7 +87,15 @@
client_cert = ssl.PrivateCertificate.loadPEM(
key_file.read() + cert_file.read())
- ssl_context = client_cert.options()
+ try:
+ import service_identity
+ # connect SSL/TLS with SNI support (https://twistedmatrix.com/trac/ticket/5190)
+ # This requires service_identity module: https://pypi.python.org/pypi/service_identity
+ ssl_context = ssl.optionsForClientTLS(six.text_type(host), clientCertificate=client_cert)
+ except ImportError:
+ log.warn("Connecting without SNI support due to absence of service_identity module.")
+ ssl_context = client_cert.options()
+
reactor.connectSSL(host, int(port), self, ssl_context)
else:
log.info("connecting unencrypted to %r %r %r" % (
@@ -114,17 +113,35 @@
interval = max(self.client_heartbeat, server_heartbeat)
log.debug("Heartbeat of %ims negotiated from (%i,%i); starting." % (
interval, self.client_heartbeat, server_heartbeat))
- self.start_heartbeat(interval)
+ # According to STOMP documentation, we have negotiated a heartbeat
+ # of `interval` milliseconds and heartbeats must be sent *at least*
+ # that often. Here, we'll send them twice as often to give plenty
+ # of room for latency.
+ # https://stomp.github.io/stomp-specification-1.2.html#Heart-beating
+ fudge_factor = 0.5
+ self.start_heartbeat(interval=(interval * fudge_factor))
else:
log.debug("Skipping heartbeat initialization")
+ # Sometimes, a stomp consumer may wish to be subscribed to a queue
+ # which is composed of messages from many different topics. In this
+ # case, the hub hands dispatching messages to the right consumers.
+ # This extension is only concerned with the queue, and negotiating that
+ # with the broker.
+ stomp_queue = self.config.get('stomp_queue', None)
+ if stomp_queue and self._topics and self._topics != [stomp_queue]:
+ log.info('Discarding consumer-specified topics in favor of '
+ 'stomp_queue=%s: %r' % (stomp_queue, self._topics))
+ # Overwrite the declarations of all of our consumers.
+ self._topics = [stomp_queue]
+
for topic in self._topics:
log.info('Subscribing to %s topic' % topic)
self.subscribe(topic, callback=lambda msg: None)
for frame in self._frames:
log.debug('Flushing queued frame')
- self.proto.transport.write(frame.pack())
+ self.proto.transport.write(frame.pack().encode('utf-8'))
self._frames = []
def clientConnectionLost(self, connector, reason):
@@ -140,7 +157,7 @@
def failover(self):
self.address_index = (self.address_index + 1) % len(self.addresses)
args = (self.addresses[self.address_index], self.key, self.crt,)
- self._delay = self._delay * (1 + (2.0 / len(self.addresses)))
+ self._delay = min(60.0, self._delay * (1 + (2.0 / len(self.addresses))))
log.info('(failover) reconnecting in %f seconds.' % self._delay)
reactor.callLater(self._delay, self.connect, *args)
@@ -150,7 +167,7 @@
def heartbeat(self, interval):
if self._heartbeat_enabled:
- self.proto.transport.write(chr(0x0A)) # Lub-dub
+ self.proto.transport.write(chr(0x0A).encode('utf-8')) # Lub-dub
reactor.callLater(interval / 1000.0, self.heartbeat, interval)
else:
log.debug("(heartbeat stopped)")
@@ -160,13 +177,16 @@
self._heartbeat_enabled = False
def send_message(self, topic, message, **headers):
+ # Convert any utf-8 encoded payloads back to unicode. stomper can't handle bytestrings
+ topic = topic.decode('utf-8') if isinstance(topic, six.binary_type) else topic
+ message = message.decode('utf-8') if isinstance(message, six.binary_type) else message
f = stomper.Frame()
f.unpack(stomper.send(topic, message))
if not self.proto:
log.info("Queueing stomp frame for later delivery")
self._frames.append(f)
else:
- self.proto.transport.write(f.pack())
+ self.proto.transport.write(f.pack().encode('utf-8'))
super(StompHubExtension, self).send_message(topic, message, **headers)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/moksha/hub/tests/test_hub.py new/moksha.hub-1.5.17/moksha/hub/tests/test_hub.py
--- old/moksha.hub-1.5.3/moksha/hub/tests/test_hub.py 2014-10-22 15:57:40.000000000 +0200
+++ new/moksha.hub-1.5.17/moksha/hub/tests/test_hub.py 2018-09-24 18:14:16.000000000 +0200
@@ -26,12 +26,19 @@
from time import sleep, time
from uuid import uuid4
from kitchen.iterutils import iterate
+import tempfile
+import shutil
+import os
+import stat
+import zmq
+import json
import moksha.common.testtools.utils as testutils
import moksha.hub.api
from moksha.hub.hub import MokshaHub, CentralMokshaHub
from moksha.hub.reactor import reactor as _reactor
+from moksha.hub.monitoring import MonitoringProducer
from nose.tools import (eq_, assert_true, assert_false)
@@ -49,7 +56,7 @@
_reactor.runUntilCurrent()
-class TestHub(unittest.TestCase):
+class TestHub:
def _setUp(self):
def kernel(config):
@@ -124,13 +131,15 @@
I'm not sure how to do that, so we're going to fake it and manually
add this consumer to the list of consumers of which the Hub is aware.
"""
- consume = cons(self.hub).consume
+ consumer = cons(self.hub)
+ consume = consumer.consume
for topic in iterate(cons.topic):
self.hub.topics[topic] = self.hub.topics.get(topic, [])
if consume not in self.hub.topics[topic]:
print('registering fake topic %r' % topic)
self.hub.topics[topic].append(consume)
sleep(sleep_duration)
+ return consumer
@testutils.crosstest
def test_abstract(self):
@@ -388,6 +397,102 @@
central = CentralMokshaHub(config, [TestConsumer], [])
central.close()
+ @testutils.crosstest
+ def test_consumer_stats_queued(self):
+ """ Verify that message processing stats are set for queued messages. """
+
+ class TestConsumer(moksha.hub.api.consumer.Consumer):
+ topic = self.a_topic
+
+ def consume(self, message):
+ pass
+
+ cons = self.fake_register_consumer(TestConsumer)
+
+ for i in range(5):
+ self.hub.send_message(topic=self.a_topic, message=secret)
+
+ simulate_reactor(sleep_duration)
+ sleep(sleep_duration)
+
+ eq_(cons.headcount_in, 5)
+ eq_(cons.headcount_out, 0)
+ eq_(cons._exception_count, 0)
+ eq_(len(cons._times), 0)
+
+ @testutils.crosstest
+ def test_consumer_stats_processed(self):
+ """ Verify that message processing stats are set for processed messages. """
+
+ class TestConsumer(moksha.hub.api.consumer.Consumer):
+ topic = self.a_topic
+
+ def consume(self, message):
+ pass
+
+ self.hub.config['moksha.blocking_mode'] = True
+ cons = self.fake_register_consumer(TestConsumer)
+
+ for i in range(5):
+ self.hub.send_message(topic=self.a_topic, message=secret)
+
+ simulate_reactor(sleep_duration)
+ sleep(sleep_duration)
+
+ eq_(cons.headcount_in, 5)
+ eq_(cons.headcount_out, 5)
+ eq_(cons._exception_count, 0)
+ eq_(len(cons._times), 5)
+
+ @testutils.crosstest
+ def test_consumer_stats_exceptions(self):
+ """ Verify that message processing stats are set for messages that generate exceptions. """
+
+ class TestConsumer(moksha.hub.api.consumer.Consumer):
+ topic = self.a_topic
+
+ def consume(self, message):
+ if message['body'] % 2:
+ raise RuntimeError()
+
+ self.hub.config['moksha.blocking_mode'] = True
+ cons = self.fake_register_consumer(TestConsumer)
+
+ for i in range(5):
+ self.hub.send_message(topic=self.a_topic, message=i)
+
+ simulate_reactor(sleep_duration)
+ sleep(sleep_duration)
+
+ eq_(cons.headcount_in, 5)
+ eq_(cons.headcount_out, 5)
+ eq_(cons._exception_count, 2)
+ eq_(len(cons._times), 5)
+
+ @testutils.crosstest
+ def test_consumer_stats_overflow(self):
+ """ Verify that Consumer._times doesn't grow beyond a maximum size. """
+
+ class TestConsumer(moksha.hub.api.consumer.Consumer):
+ topic = self.a_topic
+
+ def consume(self, message):
+ pass
+
+ self.hub.config['moksha.blocking_mode'] = True
+ cons = self.fake_register_consumer(TestConsumer)
+
+ for i in range(1500):
+ self.hub.send_message(topic=self.a_topic, message=secret)
+
+ simulate_reactor(sleep_duration)
+ sleep(sleep_duration)
+
+ eq_(cons.headcount_in, 1500)
+ eq_(cons.headcount_out, 1500)
+ eq_(cons._exception_count, 0)
+ eq_(len(cons._times), 1024)
+
class TestProducer:
def _setUp(self):
@@ -443,3 +548,49 @@
def test_idempotence(self):
""" Test that running the same test twice still works. """
return self.test_produce_ten_strs()
+
+
+class TestMonitoring:
+ def _setUp(self):
+ def kernel(config):
+ self.hub = CentralMokshaHub(config=config)
+ self.a_topic = a_topic = str(uuid4())
+
+ for __setup, name in testutils.make_setup_functions(kernel):
+ yield __setup, name
+
+ def _tearDown(self):
+ self.hub.close()
+
+ @testutils.crosstest
+ def test_monitoring(self):
+ """ Test that the MonitoringProducer works as expected. """
+ tmpdir = tempfile.mkdtemp()
+ try:
+ zmq_file = tmpdir + '/socket'
+ zmq_socket = 'ipc://' + zmq_file
+ self.hub.config['moksha.monitoring.socket'] = zmq_socket
+ self.hub.config['moksha.monitoring.socket.mode'] = '777'
+ mon = MonitoringProducer(self.hub)
+ assert_true(os.path.exists(zmq_file))
+ assert_true(stat.S_IMODE(os.stat(zmq_file).st_mode) == 0o777)
+ ctx = zmq.Context()
+ sub = ctx.socket(zmq.SUB)
+ sub.setsockopt(zmq.RCVTIMEO, 10000)
+ sub.setsockopt_string(zmq.SUBSCRIBE, u'')
+ sub.connect(zmq_socket)
+ data = []
+ def recv():
+ data.append(sub.recv())
+ thread = threading.Thread(target=recv)
+ thread.start()
+ sleep(sleep_duration)
+ mon.poll()
+ thread.join()
+ eq_(len(data), 1)
+ d = json.loads(data[0])
+ eq_(len(d['consumers']), 0)
+ eq_(len(d['producers']), 1)
+ eq_(d['producers'][0]['name'], 'MonitoringProducer')
+ finally:
+ shutil.rmtree(tmpdir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/moksha.hub.egg-info/PKG-INFO new/moksha.hub-1.5.17/moksha.hub.egg-info/PKG-INFO
--- old/moksha.hub-1.5.3/moksha.hub.egg-info/PKG-INFO 2017-07-11 17:08:34.000000000 +0200
+++ new/moksha.hub-1.5.17/moksha.hub.egg-info/PKG-INFO 2019-02-12 06:20:18.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: moksha.hub
-Version: 1.5.3
+Version: 1.5.17
Summary: Hub components for Moksha.
Home-page: https://mokshaproject.net
Author: Luke Macken, John (J5) Palmieri, Mairin Duffy, and Ralph Bean
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/moksha.hub.egg-info/SOURCES.txt new/moksha.hub-1.5.17/moksha.hub.egg-info/SOURCES.txt
--- old/moksha.hub-1.5.3/moksha.hub.egg-info/SOURCES.txt 2017-07-11 17:08:34.000000000 +0200
+++ new/moksha.hub-1.5.17/moksha.hub.egg-info/SOURCES.txt 2019-02-12 06:20:18.000000000 +0100
@@ -10,7 +10,6 @@
moksha.hub.egg-info/dependency_links.txt
moksha.hub.egg-info/entry_points.txt
moksha.hub.egg-info/namespace_packages.txt
-moksha.hub.egg-info/pbr.json
moksha.hub.egg-info/requires.txt
moksha.hub.egg-info/top_level.txt
moksha/hub/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/moksha.hub.egg-info/pbr.json new/moksha.hub-1.5.17/moksha.hub.egg-info/pbr.json
--- old/moksha.hub-1.5.3/moksha.hub.egg-info/pbr.json 2015-07-27 20:55:33.000000000 +0200
+++ new/moksha.hub-1.5.17/moksha.hub.egg-info/pbr.json 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-{"is_release": false, "git_version": "9928086"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/setup.cfg new/moksha.hub-1.5.17/setup.cfg
--- old/moksha.hub-1.5.3/setup.cfg 2017-07-11 17:08:34.000000000 +0200
+++ new/moksha.hub-1.5.17/setup.cfg 2019-02-12 06:20:18.000000000 +0100
@@ -1,5 +1,4 @@
[egg_info]
tag_build =
tag_date = 0
-tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/moksha.hub-1.5.3/setup.py new/moksha.hub-1.5.17/setup.py
--- old/moksha.hub-1.5.3/setup.py 2017-07-11 17:08:29.000000000 +0200
+++ new/moksha.hub-1.5.17/setup.py 2019-02-12 06:20:04.000000000 +0100
@@ -31,6 +31,10 @@
"txZMQ",
"txWS",
#"python-daemon",
+
+ # Optional
+ #"service_identity",
+ #"pyasn1",
]
tests_require = [
@@ -49,7 +53,7 @@
setup(
name='moksha.hub',
- version='1.5.3',
+ version='1.5.17',
description='Hub components for Moksha.',
author='Luke Macken, John (J5) Palmieri, Mairin Duffy, and Ralph Bean',
author_email='',
1
0
Hello community,
here is the log from the commit of package python-portpicker for openSUSE:Factory checked in at 2019-05-22 15:41:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-portpicker (Old)
and /work/SRC/openSUSE:Factory/.python-portpicker.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-portpicker"
Wed May 22 15:41:09 2019 rev:2 rq:704702 version:1.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-portpicker/python-portpicker.changes 2015-12-09 22:31:35.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-portpicker.new.5148/python-portpicker.changes 2019-05-22 15:42:02.318427055 +0200
@@ -1,0 +2,18 @@
+Mon May 20 15:18:38 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 1.3.1
+ * Fix a race condition in `pick_unused_port()` involving the free ports set.
+ * Adds an optional `portserver_address` parameter to `pick_unused_port()` so
+ that callers can specify their own regardless of `os.environ`.
+ * `pick_unused_port()` now raises `NoFreePortFoundError` when no available port
+ could be found rather than spinning in a loop trying forever.
+ * Fall back to `socket.AF_INET` when `socket.AF_UNIX` support is not available
+ to communicate with a portserver.
+ * Introduced `add_reserved_port()` and `return_port()` APIs to allow ports to
+ be recycled and allow users to bring ports of their own.
+ * Changed default port range to 15000-24999 to avoid ephemeral ports.
+ * Portserver bugfix.
+- convert to single spec
+- run test
+
+-------------------------------------------------------------------
Old:
----
portpicker-1.1.0.tar.gz
New:
----
portpicker-1.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-portpicker.spec ++++++
--- /var/tmp/diff_new_pack.gyRcto/_old 2019-05-22 15:42:04.218427047 +0200
+++ /var/tmp/diff_new_pack.gyRcto/_new 2019-05-22 15:42:04.234427047 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-portpicker
#
-# Copyright (c) 2015 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,28 +12,26 @@
# 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/
#
-%define upstream_name portpicker
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-portpicker
-Version: 1.1.0
+Version: 1.3.1
Release: 0
Summary: A library to choose unique available network ports
License: Apache-2.0
Group: Development/Libraries/Python
-Url: https://github.com/google/python_portpicker
-Source0: %{upstream_name}-%{version}.tar.gz
-Requires: python
-BuildRequires: python-setuptools
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
+URL: https://github.com/google/python_portpicker
+Source0: https://files.pythonhosted.org/packages/source/p/portpicker/portpicker-%{ve…
+BuildRequires: %{python_module setuptools}
+BuildRequires: fdupes
BuildArch: noarch
-%endif
+# SECTION test requirements
+BuildRequires: %{python_module mock}
+# /SECTION
+%python_subpackages
%description
Portpicker provides an API to find and return an available network port for
@@ -41,17 +39,23 @@
harnesses that launch local servers.
%prep
-%setup -q -n %{upstream_name}-%{version}
+%setup -q -n portpicker-%{version}
%build
-python setup.py build
+%python_build
%install
-python setup.py install --prefix=%{_prefix} --root=%{buildroot}
+%python_install
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
-%files
-%defattr(-,root,root,-)
-%doc CONTRIBUTING.md LICENSE README.md
-%{python_sitelib}/%{upstream_name}*
+%check
+%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} $python src/tests/portpicker_test.py
+
+%files %{python_files}
+%license LICENSE
+%doc CONTRIBUTING.md README.md
+%{python_sitelib}/*
+# import asyncio
+%python3_only %{_bindir}/portserver.py
%changelog
++++++ portpicker-1.1.0.tar.gz -> portpicker-1.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/ChangeLog.md new/portpicker-1.3.1/ChangeLog.md
--- old/portpicker-1.1.0/ChangeLog.md 1970-01-01 01:00:00.000000000 +0100
+++ new/portpicker-1.3.1/ChangeLog.md 2019-03-05 17:20:26.000000000 +0100
@@ -0,0 +1,37 @@
+## 1.3.1
+
+ * Fix a race condition in `pick_unused_port()` involving the free ports set.
+
+## 1.3.0
+
+* Adds an optional `portserver_address` parameter to `pick_unused_port()` so
+ that callers can specify their own regardless of `os.environ`.
+* `pick_unused_port()` now raises `NoFreePortFoundError` when no available port
+ could be found rather than spinning in a loop trying forever.
+* Fall back to `socket.AF_INET` when `socket.AF_UNIX` support is not available
+ to communicate with a portserver.
+
+## 1.2.0
+
+* Introduced `add_reserved_port()` and `return_port()` APIs to allow ports to
+ be recycled and allow users to bring ports of their own.
+
+## 1.1.1
+
+* Changed default port range to 15000-24999 to avoid ephemeral ports.
+* Portserver bugfix.
+
+## 1.1.0
+
+* Renamed portpicker APIs to use PEP8 style function names in code and docs.
+* Legacy CapWords API name compatibility is maintained (and explicitly tested).
+
+## 1.0.1
+
+* Code reindented to use 4 space indents and run through
+ [YAPF](https://github.com/google/yapf) for consistent style.
+* Not packaged for release.
+
+## 1.0.0
+
+* Original open source release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/MANIFEST.in new/portpicker-1.3.1/MANIFEST.in
--- old/portpicker-1.1.0/MANIFEST.in 1970-01-01 01:00:00.000000000 +0100
+++ new/portpicker-1.3.1/MANIFEST.in 2017-10-09 19:32:19.000000000 +0200
@@ -0,0 +1,8 @@
+include src/port*.py
+include src/tests/port*.py
+include README.md
+include LICENSE
+include CONTRIBUTING.md
+include ChangeLog.md
+include setup.py
+include test.sh
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/PKG-INFO new/portpicker-1.3.1/PKG-INFO
--- old/portpicker-1.1.0/PKG-INFO 2015-04-02 02:39:05.000000000 +0200
+++ new/portpicker-1.3.1/PKG-INFO 2019-03-05 17:54:53.000000000 +0100
@@ -1,11 +1,12 @@
Metadata-Version: 1.1
Name: portpicker
-Version: 1.1.0
+Version: 1.3.1
Summary: A library to choose unique available network ports.
Home-page: https://github.com/google/python_portpicker
Author: Google
Author-email: greg(a)krypto.org
License: Apache 2.0
+Description-Content-Type: UNKNOWN
Description: Portpicker provides an API to find and return an available network
port for an application to bind to. Ideally suited for use from
unittests or for test harnesses that launch local servers.
@@ -19,7 +20,8 @@
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: Jython
Classifier: Programming Language :: Python :: Implementation :: PyPy
-Requires: mock(>=1.0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/README.md new/portpicker-1.3.1/README.md
--- old/portpicker-1.1.0/README.md 2015-04-02 02:20:41.000000000 +0200
+++ new/portpicker-1.3.1/README.md 2019-01-15 22:11:37.000000000 +0100
@@ -1,6 +1,6 @@
# Python portpicker module
-This module is useful finding unused network ports on a host.
+This module is useful for finding unused network ports on a host.
It supports both Python 2 and Python 3.
This module provides a pure Python `pick_unused_port()` function.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/setup.cfg new/portpicker-1.3.1/setup.cfg
--- old/portpicker-1.1.0/setup.cfg 1970-01-01 01:00:00.000000000 +0100
+++ new/portpicker-1.3.1/setup.cfg 2019-03-05 17:54:53.000000000 +0100
@@ -0,0 +1,4 @@
+[egg_info]
+tag_build =
+tag_date = 0
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/setup.py new/portpicker-1.3.1/setup.py
--- old/portpicker-1.1.0/setup.py 2015-04-02 02:30:48.000000000 +0200
+++ new/portpicker-1.3.1/setup.py 2019-03-05 17:23:51.000000000 +0100
@@ -14,11 +14,13 @@
#
"""Simple distutils setup for the pure Python portpicker."""
-import distutils.core
import sys
import textwrap
+import setuptools
+
+
def main():
requires = []
scripts = []
@@ -31,9 +33,9 @@
# The example portserver implementation requires Python 3 and asyncio.
scripts.append('src/portserver.py')
- distutils.core.setup(
+ setuptools.setup(
name='portpicker',
- version='1.1.0',
+ version='1.3.1',
description='A library to choose unique available network ports.',
long_description=textwrap.dedent("""\
Portpicker provides an API to find and return an available network
@@ -57,6 +59,8 @@
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
+ 'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: Jython',
'Programming Language :: Python :: Implementation :: PyPy'])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/src/portpicker.egg-info/PKG-INFO new/portpicker-1.3.1/src/portpicker.egg-info/PKG-INFO
--- old/portpicker-1.1.0/src/portpicker.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
+++ new/portpicker-1.3.1/src/portpicker.egg-info/PKG-INFO 2019-03-05 17:54:53.000000000 +0100
@@ -0,0 +1,27 @@
+Metadata-Version: 1.1
+Name: portpicker
+Version: 1.3.1
+Summary: A library to choose unique available network ports.
+Home-page: https://github.com/google/python_portpicker
+Author: Google
+Author-email: greg(a)krypto.org
+License: Apache 2.0
+Description-Content-Type: UNKNOWN
+Description: Portpicker provides an API to find and return an available network
+ port for an application to bind to. Ideally suited for use from
+ unittests or for test harnesses that launch local servers.
+Platform: POSIX
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Intended Audience :: Developers
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: Jython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/src/portpicker.egg-info/SOURCES.txt new/portpicker-1.3.1/src/portpicker.egg-info/SOURCES.txt
--- old/portpicker-1.1.0/src/portpicker.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/portpicker-1.3.1/src/portpicker.egg-info/SOURCES.txt 2019-03-05 17:54:53.000000000 +0100
@@ -0,0 +1,15 @@
+CONTRIBUTING.md
+ChangeLog.md
+LICENSE
+MANIFEST.in
+README.md
+setup.py
+test.sh
+src/portpicker.py
+src/portserver.py
+src/portpicker.egg-info/PKG-INFO
+src/portpicker.egg-info/SOURCES.txt
+src/portpicker.egg-info/dependency_links.txt
+src/portpicker.egg-info/top_level.txt
+src/tests/portpicker_test.py
+src/tests/portserver_test.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/src/portpicker.egg-info/dependency_links.txt new/portpicker-1.3.1/src/portpicker.egg-info/dependency_links.txt
--- old/portpicker-1.1.0/src/portpicker.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/portpicker-1.3.1/src/portpicker.egg-info/dependency_links.txt 2019-03-05 17:54:53.000000000 +0100
@@ -0,0 +1 @@
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/src/portpicker.egg-info/top_level.txt new/portpicker-1.3.1/src/portpicker.egg-info/top_level.txt
--- old/portpicker-1.1.0/src/portpicker.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/portpicker-1.3.1/src/portpicker.egg-info/top_level.txt 2019-03-05 17:54:53.000000000 +0100
@@ -0,0 +1 @@
+portpicker
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/src/portpicker.py new/portpicker-1.3.1/src/portpicker.py
--- old/portpicker-1.1.0/src/portpicker.py 2015-04-02 02:20:57.000000000 +0200
+++ new/portpicker-1.3.1/src/portpicker.py 2019-03-05 17:20:26.000000000 +0100
@@ -36,25 +36,65 @@
"""
from __future__ import print_function
+
+import logging
import os
import random
import socket
import sys
# The legacy Bind, IsPortFree, etc. names are not exported.
-__all__ = ('bind', 'is_port_free', 'pick_unused_port',
- 'get_port_from_port_server')
+__all__ = ('bind', 'is_port_free', 'pick_unused_port', 'return_port',
+ 'add_reserved_port', 'get_port_from_port_server')
_PROTOS = [(socket.SOCK_STREAM, socket.IPPROTO_TCP),
(socket.SOCK_DGRAM, socket.IPPROTO_UDP)]
+# Ports that are currently available to be given out.
+_free_ports = set()
+
+# Ports that are reserved or from the portserver that may be returned.
+_owned_ports = set()
+
+# Ports that we chose randomly that may be returned.
+_random_ports = set()
+
+
+class NoFreePortFoundError(Exception):
+ """Exception indicating that no free port could be found."""
+ pass
+
+
+def add_reserved_port(port):
+ """Add a port that was acquired by means other than the port server."""
+ _free_ports.add(port)
+
+
+def return_port(port):
+ """Return a port that is no longer being used so it can be reused."""
+ if port in _random_ports:
+ _random_ports.remove(port)
+ elif port in _owned_ports:
+ _owned_ports.remove(port)
+ _free_ports.add(port)
+ elif port in _free_ports:
+ logging.info("Returning a port that was already returned: %s", port)
+ else:
+ logging.info("Returning a port that wasn't given by portpicker: %s",
+ port)
+
+
def bind(port, socket_type, socket_proto):
"""Try to bind to a socket of the specified type, protocol, and port.
This is primarily a helper function for PickUnusedPort, used to see
if a particular port number is available.
+ For the port to be considered available, the kernel must support at least
+ one of (IPv6, IPv4), and the port must be available on each supported
+ family.
+
Args:
port: The port number to bind to, or 0 to have the OS pick a free port.
socket_type: The type of the socket (ex: socket.SOCK_STREAM).
@@ -63,15 +103,24 @@
Returns:
The port number on success or None on failure.
"""
- sock = socket.socket(socket.AF_INET, socket_type, socket_proto)
- try:
- sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- sock.bind(('', port))
- return sock.getsockname()[1]
- except socket.error:
- return None
- finally:
- sock.close()
+ got_socket = False
+ for family in (socket.AF_INET6, socket.AF_INET):
+ try:
+ sock = socket.socket(family, socket_type, socket_proto)
+ got_socket = True
+ except socket.error:
+ continue
+ try:
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ sock.bind(('', port))
+ if socket_type == socket.SOCK_STREAM:
+ sock.listen(1)
+ port = sock.getsockname()[1]
+ except socket.error:
+ return None
+ finally:
+ sock.close()
+ return port if got_socket else None
Bind = bind # legacy API. pylint: disable=invalid-name
@@ -84,31 +133,49 @@
Returns:
boolean, whether it is free to use for both TCP and UDP
"""
- return (bind(port, _PROTOS[0][0], _PROTOS[0][1]) and
- bind(port, _PROTOS[1][0], _PROTOS[1][1]))
+ return bind(port, *_PROTOS[0]) and bind(port, *_PROTOS[1])
IsPortFree = is_port_free # legacy API. pylint: disable=invalid-name
-def pick_unused_port(pid=None):
+def pick_unused_port(pid=None, portserver_address=None):
"""A pure python implementation of PickUnusedPort.
Args:
pid: PID to tell the portserver to associate the reservation with. If
- None,
- the current process's PID is used.
+ None, the current process's PID is used.
+ portserver_address: The address (path) of a unix domain socket
+ with which to connect to a portserver, a leading '@'
+ character indicates an address in the "abstract namespace". OR
+ On systems without socket.AF_UNIX, this is an AF_INET address.
+ If None, or no port is returned by the portserver at the provided
+ address, the environment will be checked for a PORTSERVER_ADDRESS
+ variable. If that is not set, no port server will be used.
Returns:
A port number that is unused on both TCP and UDP.
+
+ Raises:
+ NoFreePortFoundError: No free port could be found.
"""
- port = None
+ try: # Instead of `if _free_ports:` to handle the race condition.
+ port = _free_ports.pop()
+ except KeyError:
+ pass
+ else:
+ _owned_ports.add(port)
+ return port
# Provide access to the portserver on an opt-in basis.
+ if portserver_address:
+ port = get_port_from_port_server(portserver_address, pid=pid)
+ if port:
+ return port
if 'PORTSERVER_ADDRESS' in os.environ:
port = get_port_from_port_server(os.environ['PORTSERVER_ADDRESS'],
pid=pid)
- if not port:
- return _pick_unused_port_without_server()
- return port
+ if port:
+ return port
+ return _pick_unused_port_without_server()
PickUnusedPort = pick_unused_port # legacy API. pylint: disable=invalid-name
@@ -122,25 +189,33 @@
should not be called by code outside of this module.
Returns:
- A port number that is unused on both TCP and UDP. None on error.
+ A port number that is unused on both TCP and UDP.
+
+ Raises:
+ NoFreePortFoundError: No free port could be found.
"""
# Try random ports first.
rng = random.Random()
for _ in range(10):
- port = int(rng.randrange(32768, 60000))
+ port = int(rng.randrange(15000, 25000))
if is_port_free(port):
+ _random_ports.add(port)
return port
- # Try OS-assigned ports next.
+ # Next, try a few times to get an OS-assigned port.
# Ambrose discovered that on the 2.6 kernel, calling Bind() on UDP socket
# returns the same port over and over. So always try TCP first.
- while True:
+ for _ in range(10):
# Ask the OS for an unused port.
port = bind(0, _PROTOS[0][0], _PROTOS[0][1])
# Check if this port is unused on the other protocol.
if port and bind(port, _PROTOS[1][0], _PROTOS[1][1]):
+ _random_ports.add(port)
return port
+ # Give up.
+ raise NoFreePortFoundError()
+
def get_port_from_port_server(portserver_address, pid=None):
"""Request a free a port from a system-wide portserver.
@@ -156,6 +231,7 @@
portserver_address: The address (path) of a unix domain socket
with which to connect to the portserver. A leading '@'
character indicates an address in the "abstract namespace."
+ On systems without socket.AF_UNIX, this is an AF_INET address.
pid: The PID to tell the portserver to associate the reservation with.
If None, the current process's PID is used.
@@ -176,7 +252,11 @@
try:
# Create socket.
- sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ if hasattr(socket, 'AF_UNIX'):
+ sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ else:
+ # fallback to AF_INET if this is not unix
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to portserver.
sock.connect(portserver_address)
@@ -189,15 +269,19 @@
buf = sock.recv(1024)
finally:
sock.close()
- except socket.error:
- print('Socket error when connecting to portserver.', file=sys.stderr)
+ except socket.error as e:
+ print('Socket error when connecting to portserver:', e,
+ file=sys.stderr)
return None
try:
- return int(buf.split(b'\n')[0])
+ port = int(buf.split(b'\n')[0])
except ValueError:
print('Portserver failed to find a port.', file=sys.stderr)
return None
+ _owned_ports.add(port)
+ return port
+
GetPortFromPortServer = get_port_from_port_server # legacy API. pylint: disable=invalid-name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/src/portserver.py new/portpicker-1.3.1/src/portserver.py
--- old/portpicker-1.1.0/src/portserver.py 2015-04-02 01:34:01.000000000 +0200
+++ new/portpicker-1.3.1/src/portserver.py 2017-10-09 19:32:19.000000000 +0200
@@ -38,6 +38,9 @@
log = None # Initialized to a logging.Logger by _configure_logging().
+_PROTOS = [(socket.SOCK_STREAM, socket.IPPROTO_TCP),
+ (socket.SOCK_DGRAM, socket.IPPROTO_UDP)]
+
def _get_process_command_line(pid):
try:
@@ -55,23 +58,51 @@
return 0
-def _port_is_available(port):
- """Return False if the given network port is currently in use."""
- for socket_type, proto in ((socket.SOCK_STREAM, socket.IPPROTO_TCP),
- (socket.SOCK_DGRAM, 0)):
- sock = None
+# TODO: Consider importing portpicker.bind() instead of duplicating the code.
+def _bind(port, socket_type, socket_proto):
+ """Try to bind to a socket of the specified type, protocol, and port.
+
+ For the port to be considered available, the kernel must support at least
+ one of (IPv6, IPv4), and the port must be available on each supported
+ family.
+
+ Args:
+ port: The port number to bind to, or 0 to have the OS pick a free port.
+ socket_type: The type of the socket (ex: socket.SOCK_STREAM).
+ socket_proto: The protocol of the socket (ex: socket.IPPROTO_TCP).
+
+ Returns:
+ The port number on success or None on failure.
+ """
+ got_socket = False
+ for family in (socket.AF_INET6, socket.AF_INET):
+ try:
+ sock = socket.socket(family, socket_type, socket_proto)
+ got_socket = True
+ except socket.error:
+ continue
try:
- sock = socket.socket(socket.AF_INET, socket_type, proto)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', port))
if socket_type == socket.SOCK_STREAM:
sock.listen(1)
+ port = sock.getsockname()[1]
except socket.error:
- return False
+ return None
finally:
- if sock:
- sock.close()
- return True
+ sock.close()
+ return port if got_socket else None
+
+
+def _is_port_free(port):
+ """Check if specified port is free.
+
+ Args:
+ port: integer, port to check
+ Returns:
+ boolean, whether it is free to use for both TCP and UDP
+ """
+ return _bind(port, *_PROTOS[0]) and _bind(port, *_PROTOS[1])
def _should_allocate_port(pid):
@@ -149,7 +180,7 @@
check_count += 1
if (candidate.start_time == 0 or
candidate.start_time != _get_process_start_time(candidate.pid)):
- if _port_is_available(candidate.pid):
+ if _is_port_free(candidate.port):
candidate.pid = pid
candidate.start_time = _get_process_start_time(pid)
if not candidate.start_time:
@@ -252,8 +283,8 @@
parser.add_argument(
'--portserver_static_pool',
type=str,
- default='32768-60000',
- help='Comma separated N-P Range(s) of ports to manage.')
+ default='15000-24999',
+ help='Comma separated N-P Range(s) of ports to manage (inclusive).')
parser.add_argument(
'--portserver_unix_socket_address',
type=str,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/src/tests/portpicker_test.py new/portpicker-1.3.1/src/tests/portpicker_test.py
--- old/portpicker-1.1.0/src/tests/portpicker_test.py 2015-04-02 02:16:51.000000000 +0200
+++ new/portpicker-1.3.1/src/tests/portpicker_test.py 2019-01-18 02:31:24.000000000 +0100
@@ -16,9 +16,11 @@
#
"""Unittests for the portpicker module."""
+from __future__ import print_function
import os
import random
import socket
+import sys
import unittest
try:
@@ -40,6 +42,9 @@
def setUp(self):
# So we can Bind even if portpicker.bind is stubbed out.
self._bind = portpicker.bind
+ portpicker._owned_ports.clear()
+ portpicker._free_ports.clear()
+ portpicker._random_ports.clear()
def testPickUnusedPortActuallyWorks(self):
"""This test can be flaky."""
@@ -65,6 +70,26 @@
@unittest.skipIf('PORTSERVER_ADDRESS' not in os.environ,
'no port server to test against')
+ def testPickUnusedCanSuccessfullyUsePortServerAddressKwarg(self):
+
+ with mock.patch.object(portpicker, '_pick_unused_port_without_server'):
+ portpicker._pick_unused_port_without_server.side_effect = (
+ Exception('eek!')
+ )
+
+ # Since _PickUnusedPortWithoutServer() raises an exception, and
+ # we've temporarily removed PORTSERVER_ADDRESS from os.environ, if
+ # we can successfully obtain a port, the portserver must be working.
+ addr = os.environ.pop('PORTSERVER_ADDRESS')
+ try:
+ port = portpicker.pick_unused_port(portserver_address=addr)
+ self.assertTrue(self.IsUnusedTCPPort(port))
+ self.assertTrue(self.IsUnusedUDPPort(port))
+ finally:
+ os.environ['PORTSERVER_ADDRESS'] = addr
+
+ @unittest.skipIf('PORTSERVER_ADDRESS' not in os.environ,
+ 'no port server to test against')
def testGetPortFromPortServer(self):
"""Exercise the get_port_from_port_server() helper function."""
for _ in range(10):
@@ -90,6 +115,50 @@
server.sendall.assert_called_once_with(b'9876\n')
self.assertEqual(port, 52768)
+ @mock.patch.dict(os.environ,{'PORTSERVER_ADDRESS': 'portserver'})
+ def testReusesPortServerPorts(self):
+ server = mock.Mock()
+ server.recv.side_effect = [b'12345\n', b'23456\n', b'34567\n']
+ with mock.patch.object(socket, 'socket', return_value=server):
+ self.assertEqual(portpicker.pick_unused_port(), 12345)
+ self.assertEqual(portpicker.pick_unused_port(), 23456)
+ portpicker.return_port(12345)
+ self.assertEqual(portpicker.pick_unused_port(), 12345)
+
+ @mock.patch.dict(os.environ,{'PORTSERVER_ADDRESS': ''})
+ def testDoesntReuseRandomPorts(self):
+ ports = set()
+ for _ in range(10):
+ port = portpicker.pick_unused_port()
+ ports.add(port)
+ portpicker.return_port(port)
+ self.assertGreater(len(ports), 5) # Allow some random reuse.
+
+ def testReturnsReservedPorts(self):
+ with mock.patch.object(portpicker, '_pick_unused_port_without_server'):
+ portpicker._pick_unused_port_without_server.side_effect = (
+ Exception('eek!'))
+ # Arbitrary port. In practice you should get this from somewhere
+ # that assigns ports.
+ reserved_port = 28465
+ portpicker.add_reserved_port(reserved_port)
+ ports = set()
+ for _ in range(10):
+ port = portpicker.pick_unused_port()
+ ports.add(port)
+ portpicker.return_port(port)
+ self.assertEqual(len(ports), 1)
+ self.assertEqual(ports.pop(), reserved_port)
+
+ @mock.patch.dict(os.environ,{'PORTSERVER_ADDRESS': ''})
+ def testFallsBackToRandomAfterRunningOutOfReservedPorts(self):
+ # Arbitrary port. In practice you should get this from somewhere
+ # that assigns ports.
+ reserved_port = 23456
+ portpicker.add_reserved_port(reserved_port)
+ self.assertEqual(portpicker.pick_unused_port(), reserved_port)
+ self.assertNotEqual(portpicker.pick_unused_port(), reserved_port)
+
def testRandomlyChosenPorts(self):
# Unless this box is under an overwhelming socket load, this test
# will heavily exercise the "pick a port randomly" part of the
@@ -132,10 +201,67 @@
return None
with mock.patch.object(portpicker, 'bind', bind_with_error):
+ got_at_least_one_port = False
for _ in range(100):
- port = portpicker._pick_unused_port_without_server()
- self.assertTrue(self.IsUnusedTCPPort(port))
- self.assertTrue(self.IsUnusedUDPPort(port))
+ try:
+ port = portpicker._pick_unused_port_without_server()
+ except portpicker.NoFreePortFoundError:
+ continue
+ else:
+ got_at_least_one_port = True
+ self.assertTrue(self.IsUnusedTCPPort(port))
+ self.assertTrue(self.IsUnusedUDPPort(port))
+ self.assertTrue(got_at_least_one_port)
+
+ def testIsPortFree(self):
+ """This might be flaky unless this test is run with a portserver."""
+ # The port should be free initially.
+ port = portpicker.pick_unused_port()
+ self.assertTrue(portpicker.is_port_free(port))
+
+ cases = [
+ (socket.AF_INET, socket.SOCK_STREAM, None),
+ (socket.AF_INET6, socket.SOCK_STREAM, 0),
+ (socket.AF_INET6, socket.SOCK_STREAM, 1),
+ (socket.AF_INET, socket.SOCK_DGRAM, None),
+ (socket.AF_INET6, socket.SOCK_DGRAM, 0),
+ (socket.AF_INET6, socket.SOCK_DGRAM, 1),
+ ]
+ for (sock_family, sock_type, v6only) in cases:
+ # Occupy the port on a subset of possible protocols.
+ try:
+ sock = socket.socket(sock_family, sock_type, 0)
+ except socket.error:
+ print('Kernel does not support sock_family=%d' % sock_family,
+ file=sys.stderr)
+ # Skip this case, since we cannot occupy a port.
+ continue
+
+ if not hasattr(socket, 'IPPROTO_IPV6'):
+ v6only = None
+
+ if v6only is not None:
+ try:
+ sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY,
+ v6only)
+ except socket.error:
+ print('Kernel does not support IPV6_V6ONLY=%d' % v6only,
+ file=sys.stderr)
+ # Don't care; just proceed with the default.
+ sock.bind(('', port))
+
+ # The port should be busy.
+ self.assertFalse(portpicker.is_port_free(port))
+ sock.close()
+
+ # Now it's free again.
+ self.assertTrue(portpicker.is_port_free(port))
+
+ def testIsPortFreeException(self):
+ port = portpicker.pick_unused_port()
+ with mock.patch.object(socket, 'socket') as mock_sock:
+ mock_sock.side_effect = socket.error('fake socket error', 0)
+ self.assertFalse(portpicker.is_port_free(port))
def testThatLegacyCapWordsAPIsExist(self):
"""The original APIs were CapWords style, 1.1 added PEP8 names."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/portpicker-1.1.0/src/tests/portserver_test.py new/portpicker-1.3.1/src/tests/portserver_test.py
--- old/portpicker-1.1.0/src/tests/portserver_test.py 2015-04-02 01:35:39.000000000 +0200
+++ new/portpicker-1.3.1/src/tests/portserver_test.py 2017-10-09 19:32:19.000000000 +0200
@@ -16,6 +16,7 @@
#
"""Tests for the example portserver."""
+from __future__ import print_function
import asyncio
import os
import socket
@@ -43,15 +44,49 @@
def test_get_process_start_time(self):
self.assertGreater(portserver._get_process_start_time(os.getpid()), 0)
- def test_port_is_available_true(self):
+ def test_is_port_free(self):
"""This might be flaky unless this test is run with a portserver."""
- # Insert Inception "we must go deeper" meme here.
- self.assertTrue(portserver._port_is_available(self.port))
+ # The port should be free initially.
+ self.assertTrue(portserver._is_port_free(self.port))
- def test_port_is_available_false(self):
+ cases = [
+ (socket.AF_INET, socket.SOCK_STREAM, None),
+ (socket.AF_INET6, socket.SOCK_STREAM, 0),
+ (socket.AF_INET6, socket.SOCK_STREAM, 1),
+ (socket.AF_INET, socket.SOCK_DGRAM, None),
+ (socket.AF_INET6, socket.SOCK_DGRAM, 0),
+ (socket.AF_INET6, socket.SOCK_DGRAM, 1),
+ ]
+ for (sock_family, sock_type, v6only) in cases:
+ # Occupy the port on a subset of possible protocols.
+ try:
+ sock = socket.socket(sock_family, sock_type, 0)
+ except socket.error:
+ print('Kernel does not support sock_family=%d' % sock_family,
+ file=sys.stderr)
+ # Skip this case, since we cannot occupy a port.
+ continue
+ if v6only is not None:
+ try:
+ sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY,
+ v6only)
+ except socket.error:
+ print('Kernel does not support IPV6_V6ONLY=%d' % v6only,
+ file=sys.stderr)
+ # Don't care; just proceed with the default.
+ sock.bind(('', self.port))
+
+ # The port should be busy.
+ self.assertFalse(portserver._is_port_free(self.port))
+ sock.close()
+
+ # Now it's free again.
+ self.assertTrue(portserver._is_port_free(self.port))
+
+ def test_is_port_free_exception(self):
with mock.patch.object(socket, 'socket') as mock_sock:
mock_sock.side_effect = socket.error('fake socket error', 0)
- self.assertFalse(portserver._port_is_available(self.port))
+ self.assertFalse(portserver._is_port_free(self.port))
def test_should_allocate_port(self):
self.assertFalse(portserver._should_allocate_port(0))
@@ -140,23 +175,45 @@
self.assertRaises(ValueError, self.pool.add_port_to_free_pool, 0)
self.assertRaises(ValueError, self.pool.add_port_to_free_pool, 65536)
- @mock.patch.object(portserver, '_port_is_available')
- def test_get_port_for_process_ok(self, mock_port_is_available):
+ @mock.patch.object(portserver, '_is_port_free')
+ def test_get_port_for_process_ok(self, mock_is_port_free):
self.pool.add_port_to_free_pool(self.port)
- mock_port_is_available.return_value = True
+ mock_is_port_free.return_value = True
self.assertEqual(self.port, self.pool.get_port_for_process(os.getpid()))
self.assertEqual(1, self.pool.ports_checked_for_last_request)
- @mock.patch.object(portserver, '_port_is_available')
- def test_get_port_for_process_none_left(self, mock_port_is_available):
+ @mock.patch.object(portserver, '_is_port_free')
+ def test_get_port_for_process_none_left(self, mock_is_port_free):
self.pool.add_port_to_free_pool(self.port)
self.pool.add_port_to_free_pool(22)
- mock_port_is_available.return_value = False
+ mock_is_port_free.return_value = False
self.assertEqual(2, self.pool.num_ports())
self.assertEqual(0, self.pool.get_port_for_process(os.getpid()))
self.assertEqual(2, self.pool.num_ports())
self.assertEqual(2, self.pool.ports_checked_for_last_request)
+ @mock.patch.object(portserver, '_is_port_free')
+ @mock.patch.object(os, 'getpid')
+ def test_get_port_for_process_pid_eq_port(self, mock_getpid, mock_is_port_free):
+ self.pool.add_port_to_free_pool(12345)
+ self.pool.add_port_to_free_pool(12344)
+ mock_is_port_free.side_effect = lambda port: port == os.getpid()
+ mock_getpid.return_value = 12345
+ self.assertEqual(2, self.pool.num_ports())
+ self.assertEqual(12345, self.pool.get_port_for_process(os.getpid()))
+ self.assertEqual(2, self.pool.ports_checked_for_last_request)
+
+ @mock.patch.object(portserver, '_is_port_free')
+ @mock.patch.object(os, 'getpid')
+ def test_get_port_for_process_pid_ne_port(self, mock_getpid, mock_is_port_free):
+ self.pool.add_port_to_free_pool(12344)
+ self.pool.add_port_to_free_pool(12345)
+ mock_is_port_free.side_effect = lambda port: port != os.getpid()
+ mock_getpid.return_value = 12345
+ self.assertEqual(2, self.pool.num_ports())
+ self.assertEqual(12344, self.pool.get_port_for_process(os.getpid()))
+ self.assertEqual(2, self.pool.ports_checked_for_last_request)
+
@mock.patch.object(portserver, '_get_process_command_line')
@mock.patch.object(portserver, '_should_allocate_port')
1
0
Hello community,
here is the log from the commit of package python-fastnumbers for openSUSE:Factory checked in at 2019-05-22 15:41:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-fastnumbers (Old)
and /work/SRC/openSUSE:Factory/.python-fastnumbers.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-fastnumbers"
Wed May 22 15:41:06 2019 rev:6 rq:704700 version:2.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-fastnumbers/python-fastnumbers.changes 2019-04-18 09:56:50.485357028 +0200
+++ /work/SRC/openSUSE:Factory/.python-fastnumbers.new.5148/python-fastnumbers.changes 2019-05-22 15:42:00.158427065 +0200
@@ -1,0 +2,5 @@
+Tue May 21 14:00:05 UTC 2019 - Andreas Schwab <schwab(a)suse.de>
+
+- Remove arch restriction
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-fastnumbers.spec ++++++
--- /var/tmp/diff_new_pack.RYNWlD/_old 2019-05-22 15:42:02.166427056 +0200
+++ /var/tmp/diff_new_pack.RYNWlD/_new 2019-05-22 15:42:02.166427056 +0200
@@ -29,7 +29,6 @@
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-ExclusiveArch: %{ix86} x86_64
# SECTION test requirements
BuildRequires: %{python_module hypothesis}
BuildRequires: %{python_module pytest-faulthandler}
1
0
Hello community,
here is the log from the commit of package python-yq for openSUSE:Factory checked in at 2019-05-22 15:41:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-yq (Old)
and /work/SRC/openSUSE:Factory/.python-yq.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-yq"
Wed May 22 15:41:03 2019 rev:4 rq:704699 version:2.7.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-yq/python-yq.changes 2019-03-29 20:42:42.494678168 +0100
+++ /work/SRC/openSUSE:Factory/.python-yq.new.5148/python-yq.changes 2019-05-22 15:41:59.322427068 +0200
@@ -1,0 +2,6 @@
+Tue May 21 10:24:07 UTC 2019 - John Vandenberg <jayvdb(a)gmail.com>
+
+- Add runtime dependency jq
+- Set LANG in %check to make tests pass on Leap builds
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-yq.spec ++++++
--- /var/tmp/diff_new_pack.LS2v6a/_old 2019-05-22 15:42:00.022427066 +0200
+++ /var/tmp/diff_new_pack.LS2v6a/_new 2019-05-22 15:42:00.026427066 +0200
@@ -23,17 +23,12 @@
Summary: Command-line YAML processor - jq wrapper for YAML documents
License: Apache-2.0
Group: Development/Languages/Python
-Url: https://github.com/kislyuk/yq
+URL: https://github.com/kislyuk/yq
Source: https://files.pythonhosted.org/packages/source/y/yq/yq-%{version}.tar.gz
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-# SECTION test requirements
-BuildRequires: %{python_module PyYAML >= 3.11}
-BuildRequires: %{python_module toml >= 0.9.4}
-BuildRequires: %{python_module xmltodict >= 0.11.0}
-BuildRequires: jq
-# /SECTION
+Requires: jq
Requires: python-PyYAML >= 3.11
Requires: python-setuptools
Requires: python-toml >= 0.9.4
@@ -41,7 +36,12 @@
Requires(post): update-alternatives
Requires(postun): update-alternatives
BuildArch: noarch
-
+# SECTION test requirements
+BuildRequires: %{python_module PyYAML >= 3.11}
+BuildRequires: %{python_module toml >= 0.9.4}
+BuildRequires: %{python_module xmltodict >= 0.11.0}
+BuildRequires: jq
+# /SECTION
%python_subpackages
%description
@@ -68,10 +68,10 @@
%python_uninstall_alternative xq
%check
+export LANG=en_US.UTF-8
PYTHONPATH=%{buildroot}%{python3_sitelib} python3 test/test.py -v
%files %{python_files}
-%defattr(-,root,root,-)
%license LICENSE
%doc README.rst
%python_alternative %{_bindir}/yq
1
0
Hello community,
here is the log from the commit of package python-dns-lexicon for openSUSE:Factory checked in at 2019-05-22 15:40:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-dns-lexicon (Old)
and /work/SRC/openSUSE:Factory/.python-dns-lexicon.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-dns-lexicon"
Wed May 22 15:40:59 2019 rev:7 rq:704697 version:3.2.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-dns-lexicon/python-dns-lexicon.changes 2019-04-14 12:22:53.531794955 +0200
+++ /work/SRC/openSUSE:Factory/.python-dns-lexicon.new.5148/python-dns-lexicon.changes 2019-05-22 15:41:47.558427121 +0200
@@ -1,0 +2,6 @@
+Wed May 22 08:35:37 UTC 2019 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Update to 3.2.6:
+ * Varous pylint fixes
+
+-------------------------------------------------------------------
Old:
----
lexicon-3.2.1.tar.gz
New:
----
lexicon-3.2.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-dns-lexicon.spec ++++++
--- /var/tmp/diff_new_pack.oj6r0a/_old 2019-05-22 15:41:57.902427075 +0200
+++ /var/tmp/diff_new_pack.oj6r0a/_new 2019-05-22 15:41:57.906427075 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-dns-lexicon
-Version: 3.2.1
+Version: 3.2.6
Release: 0
Summary: DNS record manipulation utility
License: MIT
@@ -74,6 +74,7 @@
%prep
%setup -q -n lexicon-%{version}
# remove localzone test as this test requires an internet connection
+# will be fixed with next release
rm lexicon/tests/providers/test_localzone.py
# rpmlint
@@ -90,7 +91,7 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} py.test-%{$python_bin_suffix} -v lexicon/tests
+%pytest lexicon/tests
%files %{python_files}
%{python_sitelib}
++++++ lexicon-3.2.1.tar.gz -> lexicon-3.2.6.tar.gz ++++++
++++ 48665 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package featherpad for openSUSE:Factory checked in at 2019-05-22 15:40:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/featherpad (Old)
and /work/SRC/openSUSE:Factory/.featherpad.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "featherpad"
Wed May 22 15:40:56 2019 rev:7 rq:704689 version:0.10.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/featherpad/featherpad.changes 2019-02-25 17:58:52.966206296 +0100
+++ /work/SRC/openSUSE:Factory/.featherpad.new.5148/featherpad.changes 2019-05-22 15:41:41.218427149 +0200
@@ -1,0 +2,14 @@
+Wed May 22 09:09:19 UTC 2019 - mvetter(a)suse.com
+
+- Update to 0.10.0:
+ * Added support for searching/replacing regular expressions.
+ * Added cmake support.
+ * Replace triple periods and double hyphens with ellipses and em dashes respectively on typing (can be disabled in Preferences).
+ * The Preferences dialog has a better layout and its size is always remembered.
+ * Workaround for a Qt bug that gives non-plain text to clipboard on copying/cutting/selecting text.
+ * Fixed a crash under Wayland.
+ * Fixed a small issue in determining whether files should be opened in tabs or separate windows.
+ * Added lots of cmake patterns for syntax highlighting.
+ * Disabled tab DND without X11, mainly because Wayland still has a serious problem with QDrag.
+
+-------------------------------------------------------------------
Old:
----
V0.9.4.tar.gz
New:
----
V0.10.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ featherpad.spec ++++++
--- /var/tmp/diff_new_pack.5vSoaQ/_old 2019-05-22 15:41:45.822427129 +0200
+++ /var/tmp/diff_new_pack.5vSoaQ/_new 2019-05-22 15:41:45.826427129 +0200
@@ -17,7 +17,7 @@
Name: featherpad
-Version: 0.9.4
+Version: 0.10.0
Release: 0
Summary: Qt5-based plaintext editor
License: GPL-3.0-only
++++++ V0.9.4.tar.gz -> V0.10.0.tar.gz ++++++
++++ 33606 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package jgmenu for openSUSE:Factory checked in at 2019-05-22 15:40:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jgmenu (Old)
and /work/SRC/openSUSE:Factory/.jgmenu.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jgmenu"
Wed May 22 15:40:52 2019 rev:5 rq:704687 version:3.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/jgmenu/jgmenu.changes 2019-03-19 09:59:16.876081545 +0100
+++ /work/SRC/openSUSE:Factory/.jgmenu.new.5148/jgmenu.changes 2019-05-22 15:41:34.714427178 +0200
@@ -1,0 +2,38 @@
+Wed May 22 09:04:11 UTC 2019 - mvetter(a)suse.com
+
+- Update to 3.0:
+ * This release has a MAJOR bump as we have changed a few things in a
+ non-backward compatible way:
+ + The menu background colour is set to have no transparency by
+ default (alpha changed from 85% to 100%)
+ + tint2_look is set to 0 (false) by default. Although the alignment
+ with tint2's config file can be convenient, it has caused confusion
+ for a number of users.
+ + The config module has been re-written in C (previously python).
+ It has very similar functionality, but slighly different command
+ line options. It is predominantly an internal command used by
+ 'init', so most users should not notice a difference.
+ * Support scroll past top/bottom when using keyboard arrows (issue #90).
+ When scrolling past the last item, the selection moves to the top, and
+ vice versa. Suggested-by: @hhhorb
+ * Add lithium-rc1 theme
+ * Teach widgets module to accept keyword "auto" for fgcol. If "auto" is
+ specified instead of a "#rrggbb aa" value, the jgmenurc config file
+ color_norm_fg value will be used. This is useful if you want widget
+ text to take on the same colour as ordinary menu items.
+ * Give menu items higher Z-order priority than widgets
+ * Support movement betweeen widgets and items using keyboard. Simply
+ press the <tab> button to toggle between the two. The 'greeneye' theme
+ is a good place to try this out.
+ * Use apps module in greeneye theme rather than lx. This enables users
+ without the lx module to try it. The apps module will be a pmenu
+ successor. Although it is not quite ready yet, it is good enough for
+ this.
+ * In the pmenu module, respect override .desktop files (issue #86). We
+ now do not show .desktop files with the same filenames more than once.
+ We look for .desktop files in "~/.local/share" and "$XDG_DATA_DIRS"
+ before "/usr/share" and "/usr/local/share".
+ * Lots of minor improvements, tweaks and fixes. See git log for full
+ details.
+
+-------------------------------------------------------------------
Old:
----
v2.2.1.tar.gz
New:
----
v3.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ jgmenu.spec ++++++
--- /var/tmp/diff_new_pack.kfSSM7/_old 2019-05-22 15:41:40.938427151 +0200
+++ /var/tmp/diff_new_pack.kfSSM7/_new 2019-05-22 15:41:40.942427151 +0200
@@ -17,7 +17,7 @@
Name: jgmenu
-Version: 2.2.1
+Version: 3.0
Release: 0
Summary: Small X11 menu intended to be used with openbox and tint2
License: GPL-2.0-only
++++++ v2.2.1.tar.gz -> v3.0.tar.gz ++++++
++++ 25652 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package suse-prime for openSUSE:Factory checked in at 2019-05-22 15:40:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/suse-prime (Old)
and /work/SRC/openSUSE:Factory/.suse-prime.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "suse-prime"
Wed May 22 15:40:48 2019 rev:9 rq:704686 version:0.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/suse-prime/suse-prime.changes 2019-04-08 20:54:15.082599858 +0200
+++ /work/SRC/openSUSE:Factory/.suse-prime.new.5148/suse-prime.changes 2019-05-22 15:41:23.478427228 +0200
@@ -1,0 +2,6 @@
+Mon Apr 1 13:49:26 UTC 2019 - Stefan Dirsch <sndirsch(a)suse.com>
+
+- U_Corrected-DPI-value-in-xorg-nvidia.conf.patch
+ * Corrected DPI value in xorg-nvidia.conf (boo#1130723)
+
+-------------------------------------------------------------------
New:
----
U_Corrected-DPI-value-in-xorg-nvidia.conf.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ suse-prime.spec ++++++
--- /var/tmp/diff_new_pack.WRKrbd/_old 2019-05-22 15:41:32.194427190 +0200
+++ /var/tmp/diff_new_pack.WRKrbd/_new 2019-05-22 15:41:32.206427190 +0200
@@ -24,6 +24,7 @@
Group: System/X11/Utilities
Url: https://github.com/openSUSE/SUSEPrime
Source0: https://github.com/openSUSE/SUSEPrime/archive/%{version}.tar.gz#/SUSEPrime-…
+Patch0: U_Corrected-DPI-value-in-xorg-nvidia.conf.patch
Recommends: nvidia_driver
Supplements: modalias(nvidia_driver:pci:v00008086d*sv*sd*bc03sc*i*)
Conflicts: suse-prime-alt
@@ -36,6 +37,7 @@
%prep
%setup -n SUSEPrime-%{version}
+%patch0 -p1
%build
:
++++++ U_Corrected-DPI-value-in-xorg-nvidia.conf.patch ++++++
>From 7c50a32840e54c2129fce583a6c808bcbe5d7b5f Mon Sep 17 00:00:00 2001
From: simopil <pilia.simone96(a)gmail.com>
Date: Fri, 29 Mar 2019 15:02:36 +0100
Subject: [PATCH] Corrected DPI value in xorg-nvidia.conf
---
xorg-nvidia.conf | 1 +
1 file changed, 1 insertion(+)
diff --git a/xorg-nvidia.conf b/xorg-nvidia.conf
index 26b5ea2..e37ccca 100644
--- a/xorg-nvidia.conf
+++ b/xorg-nvidia.conf
@@ -34,5 +34,6 @@ Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:X:X:X"
+ Option "DPI" "96 x 96"
Option "AllowEmptyInitialConfiguration"
EndSection
--
2.16.4
1
0
Hello community,
here is the log from the commit of package tcpflow for openSUSE:Factory checked in at 2019-05-22 15:40:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tcpflow (Old)
and /work/SRC/openSUSE:Factory/.tcpflow.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tcpflow"
Wed May 22 15:40:39 2019 rev:9 rq:704680 version:1.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/tcpflow/tcpflow.changes 2018-10-11 12:01:18.897576315 +0200
+++ /work/SRC/openSUSE:Factory/.tcpflow.new.5148/tcpflow.changes 2019-05-22 15:41:20.898427240 +0200
@@ -1,0 +2,5 @@
+Mon May 20 12:49:31 UTC 2019 - Christophe Giboudeaux <christophe(a)krop.fr>
+
+- Add the missing zlib requirement.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tcpflow.spec ++++++
--- /var/tmp/diff_new_pack.0RCnc5/_old 2019-05-22 15:41:23.294427229 +0200
+++ /var/tmp/diff_new_pack.0RCnc5/_new 2019-05-22 15:41:23.298427229 +0200
@@ -1,7 +1,7 @@
#
# spec file for package tcpflow
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2011 Sebastien Braun.
#
# All modifications and additions to the file contributed by third parties
@@ -34,6 +34,7 @@
BuildRequires: gcc-c++
BuildRequires: libpcap-devel
BuildRequires: pkgconfig(openssl)
+BuildRequires: pkgconfig(zlib)
%description
tcpflow is a program that captures data transmitted as part of TCP connections
1
0
Hello community,
here is the log from the commit of package softhsm for openSUSE:Factory checked in at 2019-05-22 15:40:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/softhsm (Old)
and /work/SRC/openSUSE:Factory/.softhsm.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "softhsm"
Wed May 22 15:40:36 2019 rev:7 rq:704679 version:2.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/softhsm/softhsm.changes 2018-09-26 14:24:33.137813929 +0200
+++ /work/SRC/openSUSE:Factory/.softhsm.new.5148/softhsm.changes 2019-05-22 15:41:16.878427258 +0200
@@ -1,0 +2,5 @@
+Mon May 20 13:38:34 UTC 2019 - Christophe Giboudeaux <christophe(a)krop.fr>
+
+- Add the missing zlib requirement.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ softhsm.spec ++++++
--- /var/tmp/diff_new_pack.g5j3Cq/_old 2019-05-22 15:41:20.694427241 +0200
+++ /var/tmp/diff_new_pack.g5j3Cq/_new 2019-05-22 15:41:20.698427241 +0200
@@ -1,7 +1,7 @@
#
# spec file for package softhsm
#
-# Copyright (c) 2018 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
@@ -39,6 +39,7 @@
BuildRequires: pkgconfig
BuildRequires: sqlite3
BuildRequires: sqlite3-devel >= 3.4.2
+BuildRequires: pkgconfig(zlib)
Requires(pre): shadow
Requires: mozilla-nss-tools
Requires: p11-kit
1
0
Hello community,
here is the log from the commit of package podofo for openSUSE:Factory checked in at 2019-05-22 15:40:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/podofo (Old)
and /work/SRC/openSUSE:Factory/.podofo.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "podofo"
Wed May 22 15:40:31 2019 rev:30 rq:704674 version:0.9.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/podofo/podofo.changes 2019-02-25 18:01:00.594099460 +0100
+++ /work/SRC/openSUSE:Factory/.podofo.new.5148/podofo.changes 2019-05-22 15:41:10.766428679 +0200
@@ -1,0 +2,6 @@
+Wed May 15 06:47:07 UTC 2019 - qzheng <qzheng(a)suse.com>
+
+- Add r1969-Fix-CVE-2019-9687-heap-based-buffer-overflow.patch
+ (boo#1129290, CVE-2019-9687).
+
+-------------------------------------------------------------------
New:
----
r1969-Fix-CVE-2019-9687-heap-based-buffer-overflow.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ podofo.spec ++++++
--- /var/tmp/diff_new_pack.hEVnaf/_old 2019-05-22 15:41:15.570427264 +0200
+++ /var/tmp/diff_new_pack.hEVnaf/_new 2019-05-22 15:41:15.574427264 +0200
@@ -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 https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
@@ -55,6 +55,8 @@
Patch13: r1961-EncryptTest-Fix-buffer-overflow-in-decrypted-out-buffer-in-TestEncrypt.patch
# PATCH-FIX-UPSTREAM
Patch14: r1963-Fix-heap-based-buffer-overflow-vulnerability-in-PoDoFo-PdfVariant-DelayedLoad.patch
+# PATCH-FIX-UPSTREAM
+Patch15: r1969-Fix-CVE-2019-9687-heap-based-buffer-overflow.patch
BuildRequires: cmake >= 2.5
BuildRequires: doxygen
BuildRequires: fdupes
++++++ r1969-Fix-CVE-2019-9687-heap-based-buffer-overflow.patch ++++++
diff --git src/base/PdfString.cpp src/base/PdfString.cpp
index fd87c7e..e5555e8 100644
--- src/base/PdfString.cpp
+++ src/base/PdfString.cpp
@@ -627,7 +627,19 @@ void PdfString::InitUtf8()
this->GetUnicodeLength(),
reinterpret_cast<pdf_utf8*>(pBuffer), lBufferLen, ePdfStringConversion_Lenient );
- pBuffer[lUtf8-1] = '\0';
+ if (lUtf8 + 1 > lBufferLen) // + 1 to account for 2 bytes termination here vs. 1 byte there
+ {
+ pBuffer = static_cast<char*>(podofo_realloc( pBuffer, lUtf8 + 1 ) );
+ if( !pBuffer )
+ {
+ PODOFO_RAISE_ERROR( ePdfError_OutOfMemory );
+ }
+ if (lUtf8 - 1 > lBufferLen)
+ lUtf8 = PdfString::ConvertUTF16toUTF8( reinterpret_cast<const pdf_utf16be*>(m_buffer.GetBuffer()),
+ this->GetUnicodeLength(), reinterpret_cast<pdf_utf8*>(pBuffer), lUtf8 + 1);
+ }
+
+ pBuffer[lUtf8 - 1] = '\0';
pBuffer[lUtf8] = '\0';
m_sUtf8 = pBuffer;
podofo_free( pBuffer );
@@ -811,6 +823,7 @@ pdf_long PdfString::ConvertUTF16toUTF8( const pdf_utf16be* pszUtf16, pdf_utf8* p
return ConvertUTF16toUTF8( pszUtf16, lLen, pszUtf8, lLenUtf8 );
}
+// returns used, or if not enough memory passed in, needed length incl. 1 byte termination
pdf_long PdfString::ConvertUTF16toUTF8( const pdf_utf16be* pszUtf16, pdf_long lLenUtf16,
pdf_utf8* pszUtf8, pdf_long lLenUtf8,
EPdfStringConversion eConversion )
@@ -828,12 +841,21 @@ pdf_long PdfString::ConvertUTF16toUTF8( const pdf_utf16be* pszUtf16, pdf_long lL
size_t sLength = lLenUtf16;
size_t resultBufLength = lLenUtf8;
- u16_to_u8 ( s, sLength, pResultBuf, &resultBufLength);
+ uint8_t* pReturnBuf = u16_to_u8( s, sLength, pResultBuf, &resultBufLength );
+ if (pReturnBuf != pResultBuf)
+ {
+ free(pReturnBuf); // allocated by libunistring, so don't use podofo_free()
+ PdfError::LogMessage( eLogSeverity_Warning, "Output string size too little to hold it\n" );
+ return resultBufLength + 1;
+ }
pdf_long lBufferLen = PODOFO_MIN( static_cast<pdf_long>(resultBufLength + 1), lLenUtf8 );
- // Make sure buffer is 0 termnated
- pszUtf8[resultBufLength] = 0;
+ // Make sure buffer is 0 terminated
+ if ( static_cast<pdf_long>(resultBufLength + 1) <= lLenUtf8 )
+ pszUtf8[resultBufLength] = 0;
+ else
+ return resultBufLength + 1; // means: check for this in the caller to detect non-termination
return lBufferLen;
}
1
0
Hello community,
here is the log from the commit of package tiled for openSUSE:Factory checked in at 2019-05-22 15:40:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tiled (Old)
and /work/SRC/openSUSE:Factory/.tiled.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tiled"
Wed May 22 15:40:22 2019 rev:16 rq:704673 version:1.2.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/tiled/tiled.changes 2019-02-13 10:00:45.025630231 +0100
+++ /work/SRC/openSUSE:Factory/.tiled.new.5148/tiled.changes 2019-05-22 15:41:00.142432469 +0200
@@ -1,0 +2,21 @@
+Wed May 22 08:40:21 UTC 2019 - mvetter(a)suse.com
+
+- Update to 1.2.4:
+ * Fixed view boundaries to take into account layer offsets
+ * Fixed map size when switching infinite off
+ * Fixed the image cache to check file modification time
+ * Fixed updating a few things when changing tileset drawing offset
+ * Fixed position of tile object outline on isometric maps
+ * Fixed saving of tile stamps when using the Shape Fill Tool
+ * tBIN plugin: Fixed loading of some tilesets on Linux
+ * tBIN plugin: Fixed possible crash when images can't be found
+ * Python plugin: Disable this plugin by default, to avoid crashes on startup
+ * JSON plugin: Fixed writing of position for objects without ID
+ * Added Swedish translation
+ Changelog from 1.2.3:
+ * Fixed cut/copy in Tile Collision Editor
+ * Fixed crash when trying to add Wang colors without a selected Wang set
+ * tBIN plugin: Fixed hang when locating missing tileset image
+ * CSV plugin: Fixed exporting of grouped tile layers
+
+-------------------------------------------------------------------
Old:
----
tiled-1.2.2.tar.gz
New:
----
tiled-1.2.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tiled.spec ++++++
--- /var/tmp/diff_new_pack.c1Ntn1/_old 2019-05-22 15:41:09.218429231 +0200
+++ /var/tmp/diff_new_pack.c1Ntn1/_new 2019-05-22 15:41:09.222429230 +0200
@@ -17,7 +17,7 @@
Name: tiled
-Version: 1.2.2
+Version: 1.2.4
Release: 0
Summary: A tilemap editor
License: GPL-2.0-or-later
++++++ tiled-1.2.2.tar.gz -> tiled-1.2.4.tar.gz ++++++
/work/SRC/openSUSE:Factory/tiled/tiled-1.2.2.tar.gz /work/SRC/openSUSE:Factory/.tiled.new.5148/tiled-1.2.4.tar.gz differ: char 29, line 1
1
0
Hello community,
here is the log from the commit of package cgit for openSUSE:Factory checked in at 2019-05-22 15:40:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cgit (Old)
and /work/SRC/openSUSE:Factory/.cgit.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cgit"
Wed May 22 15:40:17 2019 rev:33 rq:704668 version:1.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/cgit/cgit.changes 2019-02-27 17:29:22.379315957 +0100
+++ /work/SRC/openSUSE:Factory/.cgit.new.5148/cgit.changes 2019-05-22 15:40:56.950433607 +0200
@@ -1,0 +2,5 @@
+Mon May 20 13:15:12 UTC 2019 - Christophe Giboudeaux <christophe(a)krop.fr>
+
+- Add the missing zlib requirement.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cgit.spec ++++++
--- /var/tmp/diff_new_pack.eyfh3X/_old 2019-05-22 15:40:59.422432726 +0200
+++ /var/tmp/diff_new_pack.eyfh3X/_new 2019-05-22 15:40:59.422432726 +0200
@@ -37,6 +37,7 @@
BuildRequires: libxslt
BuildRequires: libzip-devel
BuildRequires: xz
+BuildRequires: pkgconfig(zlib)
BuildRoot: %_tmppath/%name-%version-build
Provides: bundled(git) = %version
1
0
Hello community,
here is the log from the commit of package urh for openSUSE:Factory checked in at 2019-05-22 15:40:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/urh (Old)
and /work/SRC/openSUSE:Factory/.urh.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "urh"
Wed May 22 15:40:08 2019 rev:23 rq:704665 version:2.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/urh/urh.changes 2019-04-11 12:16:58.204925426 +0200
+++ /work/SRC/openSUSE:Factory/.urh.new.5148/urh.changes 2019-05-22 15:40:49.282436343 +0200
@@ -1,0 +2,14 @@
+Mon May 20 18:10:30 UTC 2019 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 2.6.0
+ * This release greatly enhances the capabilities of automatic label
+ and message type inference. Preamble, Synchronization, Address
+ (SRC/DST), Sequence Number and Checksum labels are now assigned
+ automatically when hitting the Analyze button.
+ Further Changes:
+ * More accurate logic analysis
+ * Fix parameters of auto interpretation for better PSK detection
+ * Fix appearance of message type edit button in dark themes
+ * Fix error with message length divisor
+
+-------------------------------------------------------------------
Old:
----
urh-2.5.7.tar.gz
New:
----
urh-2.6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ urh.spec ++++++
--- /var/tmp/diff_new_pack.o1fPRX/_old 2019-05-22 15:40:56.734433685 +0200
+++ /var/tmp/diff_new_pack.o1fPRX/_new 2019-05-22 15:40:56.738433683 +0200
@@ -18,7 +18,7 @@
Name: urh
-Version: 2.5.7
+Version: 2.6.0
Release: 0
Summary: Tool for investigating unknown wireless protocols
License: GPL-3.0-only
++++++ urh-2.5.7.tar.gz -> urh-2.6.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/urh/urh-2.5.7.tar.gz /work/SRC/openSUSE:Factory/.urh.new.5148/urh-2.6.0.tar.gz differ: char 34, line 2
1
0
Hello community,
here is the log from the commit of package mariadb-connector-odbc for openSUSE:Factory checked in at 2019-05-22 15:40:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mariadb-connector-odbc (Old)
and /work/SRC/openSUSE:Factory/.mariadb-connector-odbc.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mariadb-connector-odbc"
Wed May 22 15:40:06 2019 rev:7 rq:704663 version:3.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/mariadb-connector-odbc/mariadb-connector-odbc.changes 2018-08-15 10:33:18.947738084 +0200
+++ /work/SRC/openSUSE:Factory/.mariadb-connector-odbc.new.5148/mariadb-connector-odbc.changes 2019-05-22 15:40:34.470441626 +0200
@@ -1,0 +2,23 @@
+Tue May 21 14:28:53 UTC 2019 - Adam Majer <adam.majer(a)suse.de>
+
+- New upstream version 3.1.1
+ * Added FORCETLS connection string option
+ * Added connection string option TLSVERSION
+ * Added option for reading section in my.cnf
+
+- Changes in version 3.1.0:
+ * The fix and the testcase Wrong Input/Output parameter type when
+ mapping SQLBindParam to SQLBindParameter
+ * The fix and the testcase SQL_DESC_PARAMETER_TYPE is SQLSMALLINT,
+ but if application tried to read it into SQLSMALLINT buffer,
+ memory would be corrupted.
+
+- sample_odbc.ini - updated listing new connection options
+- refreshed patches: DSN_names.patch, missing_libs.patch, nosoname.patch,
+ package_name.patch
+- install_correct_path.patch: keep odbc library installed in correct
+ patch on 64bit systems
+- mysql_header_path.patch - mysql headers are now under mysql/ subdir
+- missing_includes.patch - dropped, not needed anymore
+
+-------------------------------------------------------------------
Old:
----
mariadb-connector-odbc-3.0.3-ga-src.tar.gz
mariadb-connector-odbc-3.0.3-ga-src.tar.gz.asc
missing_includes.patch
New:
----
install_correct_path.patch
mariadb-connector-odbc-3.1.1-ga-src.tar.gz
mariadb-connector-odbc-3.1.1-ga-src.tar.gz.asc
mysql_header_path.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mariadb-connector-odbc.spec ++++++
--- /var/tmp/diff_new_pack.sdaFXo/_old 2019-05-22 15:40:45.254437780 +0200
+++ /var/tmp/diff_new_pack.sdaFXo/_new 2019-05-22 15:40:45.254437780 +0200
@@ -1,7 +1,7 @@
#
# spec file for package mariadb-connector-odbc
#
-# Copyright (c) 2018 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,12 +12,12 @@
# 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/
#
Name: mariadb-connector-odbc
-Version: 3.0.3
+Version: 3.1.1
Release: 0
Summary: MariaDB ODBC Connector
License: LGPL-2.1-or-later
@@ -29,7 +29,8 @@
Source2: README
Source3: sample_odbc.ini
Source4: mariadb-connector-odbc-rpmlintrc
-Patch3: missing_includes.patch
+Patch1: mysql_header_path.patch
+Patch2: install_correct_path.patch
Patch5: package_name.patch
Patch6: DSN_names.patch
Patch7: missing_libs.patch
@@ -48,7 +49,8 @@
%prep
%setup -q -n mariadb-connector-odbc-%{version}-ga-src
-%patch3 -p1
+%patch1 -p1
+%patch2 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
++++++ DSN_names.patch ++++++
--- /var/tmp/diff_new_pack.sdaFXo/_old 2019-05-22 15:40:45.278437771 +0200
+++ /var/tmp/diff_new_pack.sdaFXo/_new 2019-05-22 15:40:45.278437771 +0200
@@ -8,13 +8,25 @@
The sample DSN config file is manually maintained based on
these options.
-Index: mariadb-connector-odbc-2.0.13-ga-src/ma_dsn.c
+Index: mariadb-connector-odbc-3.1.1-ga-src/ma_dsn.c
===================================================================
---- mariadb-connector-odbc-2.0.13-ga-src.orig/ma_dsn.c
-+++ mariadb-connector-odbc-2.0.13-ga-src/ma_dsn.c
-@@ -28,52 +28,52 @@
+--- mariadb-connector-odbc-3.1.1-ga-src.orig/ma_dsn.c
++++ mariadb-connector-odbc-3.1.1-ga-src/ma_dsn.c
+@@ -27,58 +27,58 @@
+ #define DSNKEY_UID_INDEX 8
#define DSNKEY_PWD_INDEX 9
#define DSNKEY_DATABASE_INDEX 10
++
++ MADB_DsnKey DsnKeys[]=
++ {
++ {"DSN", offsetof(MADB_Dsn, DSNName), DSN_TYPE_STRING, 0, 0}, /* 0 */
++ {"DESCRIPTION", offsetof(MADB_Dsn, Description), DSN_TYPE_STRING, 0, 0},
++ {"DRIVER", offsetof(MADB_Dsn, Driver), DSN_TYPE_STRING, 0, 0},
++ /* OPTIONS should go above all DSN_TYPE_OPTION. They are not saved in DSN separately, and then DSN is read, corresponding
++ properties are filled from OPTIONS. Also putting its alias here - it should not appear on Windows(unless somebody edits
++ registry manually), but on *nix we can expect everything. Array index used in some places to decide if the key is OPTIONS */
++ {"OPTIONS", offsetof(MADB_Dsn, Options), DSN_TYPE_INT, 0, 0}, /* DSNKEY_OPTIONS_INDEX */
++ {"OPTION", DSNKEY_OPTIONS_INDEX, DSN_TYPE_INT, 0, 1}, /* DSNKEY_OPTION_INDEX */
-MADB_DsnKey DsnKeys[]=
-{
@@ -53,8 +65,12 @@
- {"SSLCRL", offsetof(MADB_Dsn, SslCrl), DSN_TYPE_STRING, 0, 0},
- {"SSLCRLPATH", offsetof(MADB_Dsn, SslCrlPath), DSN_TYPE_STRING, 0, 0},
- {"SOCKET", offsetof(MADB_Dsn, Socket), DSN_TYPE_STRING, 0, 0},
+- {"SAVEFILE", offsetof(MADB_Dsn, SaveFile), DSN_TYPE_STRING, 0, 0}, /* 30 */
+- {"USE_MYCNF", offsetof(MADB_Dsn, ReadMycnf), DSN_TYPE_OPTION, MADB_OPT_FLAG_USE_CNF, 0},
+- {"TLSVERSION", offsetof(MADB_Dsn, TlsVersion), DSN_TYPE_CBOXGROUP, 0, 0},
+- {"FORCETLS", offsetof(MADB_Dsn, ForceTls), DSN_TYPE_BOOL, 0, 0},
- /* Aliases. Here offset is index of aliased key */
-- {"SERVERNAME", DSNKEY_SERVER_INDEX, DSN_TYPE_STRING, 0, 1}, /* 30 */
+- {"SERVERNAME", DSNKEY_SERVER_INDEX, DSN_TYPE_STRING, 0, 1},
- {"USER", DSNKEY_UID_INDEX, DSN_TYPE_STRING, 0, 1},
- {"PASSWORD", DSNKEY_PWD_INDEX, DSN_TYPE_STRING, 0, 1},
- {"DB", DSNKEY_DATABASE_INDEX, DSN_TYPE_COMBO, 0, 1},
@@ -62,17 +78,6 @@
- /* Terminating Null */
- {NULL, 0, DSN_TYPE_BOOL,0,0}
-};
-+ MADB_DsnKey DsnKeys[]=
-+ {
-+ {"DSN", offsetof(MADB_Dsn, DSNName), DSN_TYPE_STRING, 0, 0}, /* 0 */
-+ {"DESCRIPTION", offsetof(MADB_Dsn, Description), DSN_TYPE_STRING, 0, 0},
-+ {"DRIVER", offsetof(MADB_Dsn, Driver), DSN_TYPE_STRING, 0, 0},
-+ /* OPTIONS should go above all DSN_TYPE_OPTION. They are not saved in DSN separately, and then DSN is read, corresponding
-+ properties are filled from OPTIONS. Also putting its alias here - it should not appear on Windows(unless somebody edits
-+ registry manually), but on *nix we can expect everything. Array index used in some places to decide if the key is OPTIONS */
-+ {"OPTIONS", offsetof(MADB_Dsn, Options), DSN_TYPE_INT, 0, 0}, /* DSNKEY_OPTIONS_INDEX */
-+ {"OPTION", DSNKEY_OPTIONS_INDEX, DSN_TYPE_INT, 0, 1}, /* DSNKEY_OPTION_INDEX */
-+
+ {"NamedPipe", offsetof(MADB_Dsn, IsNamedPipe), DSN_TYPE_OPTION, MADB_OPT_FLAG_NAMED_PIPE, 0}, /* MADB_DSNKEY_NAMEDPIPE_INDEX */
+ {"TCPIP", offsetof(MADB_Dsn, IsTcpIp), DSN_TYPE_BOOL, 0, 0}, /* DSNKEY_TCPIP_INDEX */
+ {"SERVER", offsetof(MADB_Dsn, ServerName), DSN_TYPE_STRING, 0, 0}, /* DSNKEY_SERVER_INDEX */
@@ -99,15 +104,20 @@
+ {"SSLCRL", offsetof(MADB_Dsn, SslCrl), DSN_TYPE_STRING, 0, 0},
+ {"SSLCRLPATH", offsetof(MADB_Dsn, SslCrlPath), DSN_TYPE_STRING, 0, 0},
+ {"SOCKET", offsetof(MADB_Dsn, Socket), DSN_TYPE_STRING, 0, 0},
++ {"SAVEFILE", offsetof(MADB_Dsn, SaveFile), DSN_TYPE_STRING, 0, 0}, /* 30 */
++ {"USE_MYCNF", offsetof(MADB_Dsn, ReadMycnf), DSN_TYPE_OPTION, MADB_OPT_FLAG_USE_CNF, 0},
++ {"TLSVERSION", offsetof(MADB_Dsn, TlsVersion), DSN_TYPE_CBOXGROUP, 0, 0},
++ {"FORCETLS", offsetof(MADB_Dsn, ForceTls), DSN_TYPE_BOOL, 0, 0},
+ /* Aliases. Here offset is index of aliased key */
-+ {"SERVERNAME", DSNKEY_SERVER_INDEX, DSN_TYPE_STRING, 0, 1}, /* 30 */
++ {"SERVERNAME", DSNKEY_SERVER_INDEX, DSN_TYPE_STRING, 0, 1},
+ {"USER", DSNKEY_UID_INDEX, DSN_TYPE_STRING, 0, 1},
+ {"PASSWORD", DSNKEY_PWD_INDEX, DSN_TYPE_STRING, 0, 1},
+ {"DB", DSNKEY_DATABASE_INDEX, DSN_TYPE_COMBO, 0, 1},
-+
+
+ /* Terminating Null */
+ {NULL, 0, DSN_TYPE_BOOL,0,0}
+ };
-
++
+ /* TODO: Shouln't 2nd be DSNKEY_OPTIONS_INDEX? But I seemed to remember it was removed for a reason... */
#define IS_OPTIONS_BITMAP(key_index) (key_index == DSNKEY_OPTIONS_INDEX || key_index == DSNKEY_OPTIONS_INDEX)
++++++ install_correct_path.patch ++++++
Index: mariadb-connector-odbc-3.1.1-ga-src/CMakeLists.txt
===================================================================
--- mariadb-connector-odbc-3.1.1-ga-src.orig/CMakeLists.txt
+++ mariadb-connector-odbc-3.1.1-ga-src/CMakeLists.txt
@@ -324,7 +324,7 @@ ELSE()
IF(NOT DEFINED INSTALL_LIB_SUFFIX)
SET(INSTALL_LIB_SUFFIX "lib")
IF("${CMAKE_SIZEOF_VOID_P}" EQUAL "8" AND EXISTS "/usr/lib64/")
- SET(INSTALL_LIB_SUFFIX "lib")
+ SET(INSTALL_LIB_SUFFIX "lib64")
ENDIF()
ENDIF()
++++++ mariadb-connector-odbc-3.0.3-ga-src.tar.gz -> mariadb-connector-odbc-3.1.1-ga-src.tar.gz ++++++
++++ 9937 lines of diff (skipped)
++++++ missing_libs.patch ++++++
--- /var/tmp/diff_new_pack.sdaFXo/_old 2019-05-22 15:40:45.450437710 +0200
+++ /var/tmp/diff_new_pack.sdaFXo/_new 2019-05-22 15:40:45.450437710 +0200
@@ -1,13 +1,13 @@
-Index: mariadb-connector-odbc-3.0.2-ga-src/CMakeLists.txt
+Index: mariadb-connector-odbc-3.1.1-ga-src/CMakeLists.txt
===================================================================
---- mariadb-connector-odbc-3.0.2-ga-src.orig/CMakeLists.txt
-+++ mariadb-connector-odbc-3.0.2-ga-src/CMakeLists.txt
-@@ -108,7 +108,7 @@ IF(WIN32)
+--- mariadb-connector-odbc-3.1.1-ga-src.orig/CMakeLists.txt
++++ mariadb-connector-odbc-3.1.1-ga-src/CMakeLists.txt
+@@ -159,7 +159,7 @@ IF(WIN32)
ENDIF()
ELSE()
SEARCH_LIBRARY(LIB_MATH floor m)
- SET(PLATFORM_DEPENDENCIES ${LIB_MATH})
+ SET(PLATFORM_DEPENDENCIES ${LIB_MATH} pthread)
SET (MARIADB_ODBC_SOURCES ${MARIADB_ODBC_SOURCES} ma_platform_posix.c)
- IF(MARIADB_LINK_DYNAMIC)
- SET(MARIADB_CLIENT_FILENAME libmariadb.so.3)
+ ENDIF()
+
++++++ mysql_header_path.patch ++++++
Index: mariadb-connector-odbc-3.1.1-ga-src/ma_odbc.h
===================================================================
--- mariadb-connector-odbc-3.1.1-ga-src.orig/ma_odbc.h
+++ mariadb-connector-odbc-3.1.1-ga-src/ma_odbc.h
@@ -29,7 +29,7 @@
#include <stdlib.h>
-#include <mysql.h>
+#include <mysql/mysql.h>
#include <ma_legacy_helpers.h>
@@ -37,7 +37,7 @@
#include <sqlext.h>
#include <odbcinst.h>
-#include <errmsg.h>
+#include <mysql/errmsg.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
++++++ nosoname.patch ++++++
--- /var/tmp/diff_new_pack.sdaFXo/_old 2019-05-22 15:40:45.470437703 +0200
+++ /var/tmp/diff_new_pack.sdaFXo/_new 2019-05-22 15:40:45.474437701 +0200
@@ -1,13 +1,13 @@
-Index: mariadb-connector-odbc-3.0.2-ga-src/CMakeLists.txt
+Index: mariadb-connector-odbc-3.1.1-ga-src/CMakeLists.txt
===================================================================
---- mariadb-connector-odbc-3.0.2-ga-src.orig/CMakeLists.txt
-+++ mariadb-connector-odbc-3.0.2-ga-src/CMakeLists.txt
-@@ -238,7 +238,7 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/maria
- ${CMAKE_SOURCE_DIR}/mariadb-odbc-driver-uni.def)
-
- ####### MAODBC #######
--ADD_LIBRARY(${LIBRARY_NAME} SHARED ${MARIADB_ODBC_SOURCES} ${CMAKE_SOURCE_DIR}/mariadb-odbc-driver-uni.def maodbcu.rc)
-+ADD_LIBRARY(${LIBRARY_NAME} MODULE ${MARIADB_ODBC_SOURCES} ${CMAKE_SOURCE_DIR}/mariadb-odbc-driver-uni.def maodbcu.rc)
-
- SET_TARGET_PROPERTIES(maodbc PROPERTIES LANGUAGE C)
- TARGET_LINK_LIBRARIES(maodbc ${MARIADB_LIB} ${ODBC_INSTLIBS} ${PLATFORM_DEPENDENCIES})
+--- mariadb-connector-odbc-3.1.1-ga-src.orig/CMakeLists.txt
++++ mariadb-connector-odbc-3.1.1-ga-src/CMakeLists.txt
+@@ -281,7 +281,7 @@ IF(WIN32)
+ ADD_LIBRARY(${LIBRARY_NAME} SHARED ${MARIADB_ODBC_SOURCES} ${CMAKE_SOURCE_DIR}/mariadb-odbc-driver-uni.def maodbcu.rc)
+ ELSE()
+ MESSAGE(STATUS "Version script: ${CMAKE_SOURCE_DIR}/maodbc.def")
+- ADD_LIBRARY(${LIBRARY_NAME} SHARED ${MARIADB_ODBC_SOURCES} maodbcu.rc)
++ ADD_LIBRARY(${LIBRARY_NAME} MODULE ${MARIADB_ODBC_SOURCES} maodbcu.rc)
+
+ IF(APPLE)
+ SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES LINK_FLAGS "-Wl")
++++++ package_name.patch ++++++
--- /var/tmp/diff_new_pack.sdaFXo/_old 2019-05-22 15:40:45.482437698 +0200
+++ /var/tmp/diff_new_pack.sdaFXo/_new 2019-05-22 15:40:45.486437697 +0200
@@ -4,10 +4,10 @@
This is done so things are installed in right places with correct names.
-Index: mariadb-connector-odbc-3.0.2-ga-src/CMakeLists.txt
+Index: mariadb-connector-odbc-3.1.1-ga-src/CMakeLists.txt
===================================================================
---- mariadb-connector-odbc-3.0.2-ga-src.orig/CMakeLists.txt
-+++ mariadb-connector-odbc-3.0.2-ga-src/CMakeLists.txt
+--- mariadb-connector-odbc-3.1.1-ga-src.orig/CMakeLists.txt
++++ mariadb-connector-odbc-3.1.1-ga-src/CMakeLists.txt
@@ -16,7 +16,7 @@
# or write to the Free Software Foundation, Inc.,
# 51 Franklin St., Fifth Floor, Boston, MA 02110, USA
@@ -17,7 +17,7 @@
cmake_minimum_required(VERSION 2.8)
-@@ -261,7 +261,7 @@ IF(WIN32)
+@@ -313,7 +313,7 @@ IF(WIN32)
ENDIF()
@@ -26,12 +26,12 @@
IF(WIN32)
ADD_SUBDIRECTORY(wininstall)
ELSE()
-@@ -279,7 +279,7 @@ ELSE()
+@@ -337,7 +337,7 @@ ELSE()
${CMAKE_SOURCE_DIR}/COPYING
${CMAKE_SOURCE_DIR}/README
DESTINATION
-- ./share/doc/${CPACK_PACKAGE_NAME}/)
-+ ./share/doc/packages/${CPACK_PACKAGE_NAME}/)
+- ./share/doc/${CPACK_PACKAGE_NAME}/
++ ./share/doc/packages/${CPACK_PACKAGE_NAME}/
+ COMPONENT Documentation)
ENDIF()
- # Tests. Checking if we have them. May be not the case if we are building from source package
++++++ sample_odbc.ini ++++++
--- /var/tmp/diff_new_pack.sdaFXo/_old 2019-05-22 15:40:45.514437687 +0200
+++ /var/tmp/diff_new_pack.sdaFXo/_new 2019-05-22 15:40:45.514437687 +0200
@@ -48,6 +48,15 @@
#SslCrl =
#SslCrlPath =
+# Combination of "TLSv1.1", "TLSv1.2", "TLSv1.3"
+#TlsVersion =
+#ForceTls =
+
+# file DSN
+#SaveFile =
+
+#ReadMycnf =
+
# Options is a numeric combination of the following constants
#
#OPT_FLAG_FIELD_LENGTH 1
1
0
Hello community,
here is the log from the commit of package 0ad for openSUSE:Factory checked in at 2019-05-22 15:40:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/0ad (Old)
and /work/SRC/openSUSE:Factory/.0ad.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "0ad"
Wed May 22 15:40:01 2019 rev:10 rq:704652 version:0.0.23b
Changes:
--------
--- /work/SRC/openSUSE:Factory/0ad/0ad.changes 2019-04-14 12:23:09.135813672 +0200
+++ /work/SRC/openSUSE:Factory/.0ad.new.5148/0ad.changes 2019-05-22 15:40:20.418446639 +0200
@@ -1,0 +2,5 @@
+Mon May 20 12:12:08 UTC 2019 - Guillaume GARDET <guillaume.gardet(a)opensuse.org>
+
+- Add _constraints to avoid build failures due to OOM
+
+-------------------------------------------------------------------
New:
----
_constraints
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _constraints ++++++
<?xml version="1.0" encoding="UTF-8"?>
<constraints>
<hardware>
<disk>
<size unit="G">6</size>
</disk>
<memory>
<size unit="M">3500</size>
</memory>
</hardware>
</constraints>
1
0
Hello community,
here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2019-05-22 15:39:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools"
Wed May 22 15:39:56 2019 rev:179 rq:704628 version:20190522.4707e237
Changes:
--------
--- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2019-05-21 10:39:20.395127798 +0200
+++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.5148/openSUSE-release-tools.changes 2019-05-22 15:40:14.790448647 +0200
@@ -1,0 +2,25 @@
+Wed May 22 06:20:22 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190522.4707e237:
+ * Require python3-osc and python3 only
+ * Require newly released osc for python3 fixes
+
+-------------------------------------------------------------------
+Wed May 22 05:48:48 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190522.5ac61a01:
+ * There is no use of urlgrabber left
+
+-------------------------------------------------------------------
+Tue May 21 10:05:37 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190521.d64a1336:
+ * TTM: Add new failed status 'timeout_exceeded'
+
+-------------------------------------------------------------------
+Mon May 20 15:41:37 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190520.ad7abc06:
+ * Add SLES15-SP1-SAP-Azure-LI-BYOS cloud image
+
+-------------------------------------------------------------------
Old:
----
openSUSE-release-tools-20190520.c8cc0dd1.obscpio
New:
----
openSUSE-release-tools-20190522.4707e237.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.CF1fQV/_old 2019-05-22 15:40:18.230447420 +0200
+++ /var/tmp/diff_new_pack.CF1fQV/_new 2019-05-22 15:40:18.234447418 +0200
@@ -16,22 +16,11 @@
#
-%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150100
-%bcond_without python3
-%else
-%bcond_with python3
-%endif
-%if %{with python3}
-%define use_python python3
-%else
-%define use_python python
-%endif
-
%global __provides_exclude ^perl.*
%define source_dir openSUSE-release-tools
%define announcer_filename factory-package-news
Name: openSUSE-release-tools
-Version: 20190520.c8cc0dd1
+Version: 20190522.4707e237
Release: 0
Summary: Tools to aid in staging and release work for openSUSE/SUSE
License: GPL-2.0-or-later AND MIT
@@ -39,16 +28,16 @@
Url: https://github.com/openSUSE/openSUSE-release-tools
Source: %{name}-%{version}.tar.xz
BuildArch: noarch
-# Requires sr#512849 which provides osc_plugin_dir.
-BuildRequires: %{use_python}-PyYAML
-BuildRequires: %{use_python}-cmdln
-BuildRequires: %{use_python}-colorama
-BuildRequires: %{use_python}-lxml
-BuildRequires: %{use_python}-pycurl
-BuildRequires: %{use_python}-python-dateutil
-BuildRequires: %{use_python}-pyxdg
-BuildRequires: %{use_python}-urlgrabber
-BuildRequires: osc >= 0.159.0
+# Requires sr#704176
+BuildRequires: osc >= 0.165.1
+BuildRequires: python3-PyYAML
+BuildRequires: python3-cmdln
+BuildRequires: python3-colorama
+BuildRequires: python3-lxml
+BuildRequires: python3-osc
+BuildRequires: python3-pycurl
+BuildRequires: python3-python-dateutil
+BuildRequires: python3-pyxdg
# Spec related requirements.
%if 0%{?is_opensuse}
@@ -60,16 +49,15 @@
BuildRequires: rsyslog
BuildRequires: systemd-rpm-macros
-Requires: %{use_python}-PyYAML
-Requires: %{use_python}-cmdln
-Requires: %{use_python}-colorama
-Requires: %{use_python}-lxml
+Requires: python3-PyYAML
+Requires: python3-cmdln
+Requires: python3-colorama
+Requires: python3-lxml
# issue-diff.py, legal-auto.py, and openqa-maintenance.py
-Requires: %{use_python}-pycurl
-Requires: %{use_python}-python-dateutil
-Requires: %{use_python}-pyxdg
-Requires: %{use_python}-requests
-Requires: %{use_python}-urlgrabber
+Requires: python3-pycurl
+Requires: python3-python-dateutil
+Requires: python3-pyxdg
+Requires: python3-requests
# ttm/manager.py
%if %{without python3}
Requires: python-enum34
@@ -100,10 +88,10 @@
Summary: Development requirements for openSUSE-release-tools
Group: Development/Tools/Other
BuildArch: noarch
-Requires: %{use_python}-httpretty
-Requires: %{use_python}-mock
-Requires: %{use_python}-nose
Requires: libxml2-tools
+Requires: python3-httpretty
+Requires: python3-mock
+Requires: python3-nose
%description devel
Development requirements for openSUSE-release-tools to be used in conjunction
@@ -258,10 +246,10 @@
Summary: Generates package lists in 000product
Group: Development/Tools/Other
BuildArch: noarch
-Requires: %{use_python}-requests
-Requires: %{use_python}-solv
Requires: obs-service-product_converter
Requires: osclib = %{version}
+Requires: python3-requests
+Requires: python3-solv
# for compressing the .packages files in 000update-repos
Requires: /usr/bin/xz
# we use the same user as repo-checker
@@ -278,7 +266,8 @@
BuildArch: noarch
# TODO Update requirements, but for now base deps.
Requires: %{name} = %{version}
-Requires: osc >= 0.159.0
+Requires: osc >= 0.165.1
+Requires: python3-osc
%description -n osclib
Supplemental osc libraries utilized by release tools.
@@ -287,7 +276,7 @@
Summary: OSC plugin to check for duplicate requests
Group: Development/Tools/Other
BuildArch: noarch
-Requires: osc >= 0.159.0
+Requires: osc >= 0.165.1
Requires: osclib = %{version}
%description -n osc-plugin-check_dups
@@ -297,7 +286,7 @@
Summary: OSC plugin for cycle visualization
Group: Development/Tools/Other
BuildArch: noarch
-Requires: osc >= 0.159.0
+Requires: osc >= 0.165.1
Requires: osclib = %{version}
%description -n osc-plugin-cycle
@@ -307,7 +296,7 @@
Summary: OSC plugin for origin management
Group: Development/Tools/Other
BuildArch: noarch
-Requires: osc >= 0.159.0
+Requires: osc >= 0.165.1
Requires: osclib = %{version}
%description -n osc-plugin-origin
@@ -328,7 +317,7 @@
Summary: OSC plugin to check for virtually accepted request
Group: Development/Tools/Other
BuildArch: noarch
-Requires: osc >= 0.159.0
+Requires: osc >= 0.165.1
Requires: osclib = %{version}
%description -n osc-plugin-vdelreq
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.CF1fQV/_old 2019-05-22 15:40:18.286447399 +0200
+++ /var/tmp/diff_new_pack.CF1fQV/_new 2019-05-22 15:40:18.286447399 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param>
- <param name="changesrevision">a73054b189fb3cb5d05cd1599b32cf361c977a7e</param>
+ <param name="changesrevision">90a5fe9f9010617ca5866de8fdc9891dd8a8ad33</param>
</service>
</servicedata>
++++++ openSUSE-release-tools-20190520.c8cc0dd1.obscpio -> openSUSE-release-tools-20190522.4707e237.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190520.c8cc0dd1/dist/ci/testenv-tumbleweed/Dockerfile new/openSUSE-release-tools-20190522.4707e237/dist/ci/testenv-tumbleweed/Dockerfile
--- old/openSUSE-release-tools-20190520.c8cc0dd1/dist/ci/testenv-tumbleweed/Dockerfile 2019-05-20 11:57:02.000000000 +0200
+++ new/openSUSE-release-tools-20190522.4707e237/dist/ci/testenv-tumbleweed/Dockerfile 2019-05-22 08:18:46.000000000 +0200
@@ -1,6 +1,10 @@
#!BuildTag: osrt_testenv_tumbleweed
FROM opensuse/tumbleweed
+# make sure we see osc regressions earlier than it hitting tumbleweed
+RUN zypper -n ar https://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_Factory/ openSUSE:Tools
+RUN zypper --gpg-auto-import-keys ref
+
RUN useradd tester -d /code/tests/home
RUN zypper in -y osc python3-nose python3-httpretty python3-pyxdg python3-PyYAML \
@@ -8,9 +12,6 @@
python3-influxdb python3-coverage python3-coveralls libxml2-tools curl python3-flake8 \
vim vim-data strace git sudo patch openSUSE-release openSUSE-release-ftp
-COPY osc-hotpatch.diff /tmp
-RUN patch /usr/lib/python3.7/site-packages/osc/core.py /tmp/osc-hotpatch.diff
-
COPY run_as_tester /usr/bin
# OBS does not know about executable files, so we need to tweak it manually
RUN chmod a+x /usr/bin/run_as_tester
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190520.c8cc0dd1/dist/ci/testenv-tumbleweed/osc-hotpatch.diff new/openSUSE-release-tools-20190522.4707e237/dist/ci/testenv-tumbleweed/osc-hotpatch.diff
--- old/openSUSE-release-tools-20190520.c8cc0dd1/dist/ci/testenv-tumbleweed/osc-hotpatch.diff 2019-05-20 11:57:02.000000000 +0200
+++ new/openSUSE-release-tools-20190522.4707e237/dist/ci/testenv-tumbleweed/osc-hotpatch.diff 1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- /usr/lib/python3.6/site-packages/osc/core.py.bak 2019-05-02 18:14:01.088380882 +0000
-+++ /usr/lib/python3.6/site-packages/osc/core.py 2019-05-02 18:14:19.204341426 +0000
-@@ -6318,7 +6318,7 @@
- try:
- comment = node.find('comment').text.encode(locale.getpreferredencoding(), 'replace')
- except:
-- comment = b'<no message>'
-+ comment = '<no message>'
- try:
- requestid = node.find('requestid').text.encode(locale.getpreferredencoding(), 'replace')
- except:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190520.c8cc0dd1/dist/package/openSUSE-release-tools.spec new/openSUSE-release-tools-20190522.4707e237/dist/package/openSUSE-release-tools.spec
--- old/openSUSE-release-tools-20190520.c8cc0dd1/dist/package/openSUSE-release-tools.spec 2019-05-20 11:57:02.000000000 +0200
+++ new/openSUSE-release-tools-20190522.4707e237/dist/package/openSUSE-release-tools.spec 2019-05-22 08:18:46.000000000 +0200
@@ -16,17 +16,6 @@
#
-%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150100
-%bcond_without python3
-%else
-%bcond_with python3
-%endif
-%if %{with python3}
-%define use_python python3
-%else
-%define use_python python
-%endif
-
%global __provides_exclude ^perl.*
%define source_dir openSUSE-release-tools
%define announcer_filename factory-package-news
@@ -39,16 +28,16 @@
Url: https://github.com/openSUSE/openSUSE-release-tools
Source: %{name}-%{version}.tar.xz
BuildArch: noarch
-# Requires sr#512849 which provides osc_plugin_dir.
-BuildRequires: osc >= 0.159.0
-BuildRequires: %{use_python}-PyYAML
-BuildRequires: %{use_python}-cmdln
-BuildRequires: %{use_python}-colorama
-BuildRequires: %{use_python}-lxml
-BuildRequires: %{use_python}-pycurl
-BuildRequires: %{use_python}-python-dateutil
-BuildRequires: %{use_python}-pyxdg
-BuildRequires: %{use_python}-urlgrabber
+# Requires sr#704176
+BuildRequires: osc >= 0.165.1
+BuildRequires: python3-osc
+BuildRequires: python3-PyYAML
+BuildRequires: python3-cmdln
+BuildRequires: python3-colorama
+BuildRequires: python3-lxml
+BuildRequires: python3-pycurl
+BuildRequires: python3-python-dateutil
+BuildRequires: python3-pyxdg
# Spec related requirements.
%if 0%{?is_opensuse}
@@ -60,16 +49,15 @@
BuildRequires: rsyslog
BuildRequires: systemd-rpm-macros
-Requires: %{use_python}-PyYAML
-Requires: %{use_python}-cmdln
-Requires: %{use_python}-colorama
-Requires: %{use_python}-lxml
+Requires: python3-PyYAML
+Requires: python3-cmdln
+Requires: python3-colorama
+Requires: python3-lxml
# issue-diff.py, legal-auto.py, and openqa-maintenance.py
-Requires: %{use_python}-pycurl
-Requires: %{use_python}-python-dateutil
-Requires: %{use_python}-pyxdg
-Requires: %{use_python}-requests
-Requires: %{use_python}-urlgrabber
+Requires: python3-pycurl
+Requires: python3-python-dateutil
+Requires: python3-pyxdg
+Requires: python3-requests
# ttm/manager.py
%if %{without python3}
Requires: python-enum34
@@ -101,9 +89,9 @@
Group: Development/Tools/Other
BuildArch: noarch
Requires: libxml2-tools
-Requires: %{use_python}-httpretty
-Requires: %{use_python}-mock
-Requires: %{use_python}-nose
+Requires: python3-httpretty
+Requires: python3-mock
+Requires: python3-nose
%description devel
Development requirements for openSUSE-release-tools to be used in conjunction
@@ -260,8 +248,8 @@
BuildArch: noarch
Requires: obs-service-product_converter
Requires: osclib = %{version}
-Requires: %{use_python}-requests
-Requires: %{use_python}-solv
+Requires: python3-requests
+Requires: python3-solv
# for compressing the .packages files in 000update-repos
Requires: /usr/bin/xz
# we use the same user as repo-checker
@@ -278,7 +266,8 @@
BuildArch: noarch
# TODO Update requirements, but for now base deps.
Requires: %{name} = %{version}
-Requires: osc >= 0.159.0
+Requires: osc >= 0.165.1
+Requires: python3-osc
%description -n osclib
Supplemental osc libraries utilized by release tools.
@@ -287,7 +276,7 @@
Summary: OSC plugin to check for duplicate requests
Group: Development/Tools/Other
BuildArch: noarch
-Requires: osc >= 0.159.0
+Requires: osc >= 0.165.1
Requires: osclib = %{version}
%description -n osc-plugin-check_dups
@@ -297,7 +286,7 @@
Summary: OSC plugin for cycle visualization
Group: Development/Tools/Other
BuildArch: noarch
-Requires: osc >= 0.159.0
+Requires: osc >= 0.165.1
Requires: osclib = %{version}
%description -n osc-plugin-cycle
@@ -307,7 +296,7 @@
Summary: OSC plugin for origin management
Group: Development/Tools/Other
BuildArch: noarch
-Requires: osc >= 0.159.0
+Requires: osc >= 0.165.1
Requires: osclib = %{version}
%description -n osc-plugin-origin
@@ -328,7 +317,7 @@
Summary: OSC plugin to check for virtually accepted request
Group: Development/Tools/Other
BuildArch: noarch
-Requires: osc >= 0.159.0
+Requires: osc >= 0.165.1
Requires: osclib = %{version}
%description -n osc-plugin-vdelreq
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190520.c8cc0dd1/gocd/sp1.target.gocd.yaml new/openSUSE-release-tools-20190522.4707e237/gocd/sp1.target.gocd.yaml
--- old/openSUSE-release-tools-20190520.c8cc0dd1/gocd/sp1.target.gocd.yaml 2019-05-20 11:57:02.000000000 +0200
+++ new/openSUSE-release-tools-20190522.4707e237/gocd/sp1.target.gocd.yaml 2019-05-22 08:18:46.000000000 +0200
@@ -81,6 +81,7 @@
SLES15-SP1-EC2-ECS-HVM SLES15-SP1-EC2-HVM \
SLES15-SP1-EC2-HVM-BYOS SLES15-SP1-GCE SLES15-SP1-GCE-BYOS \
SLES15-SP1-SAP-Azure SLES15-SP1-SAP-Azure-BYOS \
+ SLES15-SP1-SAP-Azure-LI-BYOS \
SLES15-SP1-SAP-EC2-HVM SLES15-SP1-SAP-EC2-HVM-BYOS \
SLES15-SP1-OCI-BYOS SLES15-SP1-SAP-OCI-BYOS \
SLES15-SP1-SAP-GCE SLES15-SP1-SAP-GCE-BYOS 000product; do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190520.c8cc0dd1/requirements.txt new/openSUSE-release-tools-20190522.4707e237/requirements.txt
--- old/openSUSE-release-tools-20190520.c8cc0dd1/requirements.txt 2019-05-20 11:57:02.000000000 +0200
+++ new/openSUSE-release-tools-20190522.4707e237/requirements.txt 2019-05-22 08:18:46.000000000 +0200
@@ -3,12 +3,11 @@
PyYAML
pycurl
python-dateutil
-urlgrabber
pyxdg
cmdln
git+https://github.com/openSUSE/osc
influxdb
# Dependencies for testing
-httpretty<0.9.6
+httpretty
mock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190520.c8cc0dd1/ttm/publisher.py new/openSUSE-release-tools-20190522.4707e237/ttm/publisher.py
--- old/openSUSE-release-tools-20190520.c8cc0dd1/ttm/publisher.py 2019-05-20 11:57:02.000000000 +0200
+++ new/openSUSE-release-tools-20190522.4707e237/ttm/publisher.py 2019-05-22 08:18:46.000000000 +0200
@@ -50,7 +50,7 @@
in_progress = False
for job in jobs:
# print json.dumps(job, sort_keys=True, indent=4)
- if job['result'] in ('failed', 'incomplete', 'skipped', 'user_cancelled', 'obsoleted', 'parallel_failed'):
+ if job['result'] in ('failed', 'incomplete', 'timeout_exceeded', 'skipped', 'user_cancelled', 'obsoleted', 'parallel_failed'):
# print json.dumps(job, sort_keys=True, indent=4), jobname
url = makeurl(self.project.openqa_server,
['api', 'v1', 'jobs', str(job['id']), 'comments'])
++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.CF1fQV/_old 2019-05-22 15:40:18.926447172 +0200
+++ /var/tmp/diff_new_pack.CF1fQV/_new 2019-05-22 15:40:18.930447170 +0200
@@ -1,5 +1,5 @@
name: openSUSE-release-tools
-version: 20190520.c8cc0dd1
-mtime: 1558346222
-commit: c8cc0dd1d3e0d3e4c5a4e75581daaa0795802c0f
+version: 20190522.4707e237
+mtime: 1558505926
+commit: 4707e23722677c0adeb6796413b19966316fb910
1
0
Hello community,
here is the log from the commit of package mate-calc for openSUSE:Factory checked in at 2019-05-22 15:39:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mate-calc (Old)
and /work/SRC/openSUSE:Factory/.mate-calc.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mate-calc"
Wed May 22 15:39:52 2019 rev:8 rq:704394 version:1.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/mate-calc/mate-calc.changes 2019-05-16 22:03:45.806638531 +0200
+++ /work/SRC/openSUSE:Factory/.mate-calc.new.5148/mate-calc.changes 2019-05-22 15:40:01.130453526 +0200
@@ -1,0 +2,10 @@
+Sun May 12 18:13:56 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.22.1:
+ * currency-manager: Update name_map in load_imf_rates.
+ * Display small numbers in scientific notation.
+ * mp: Fix calculate result ln(e^(i*π)).
+ * mate-calc: Fix memory leak.
+ * Update translations.
+
+-------------------------------------------------------------------
Old:
----
mate-calc-1.22.0.tar.xz
New:
----
mate-calc-1.22.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mate-calc.spec ++++++
--- /var/tmp/diff_new_pack.szrfg6/_old 2019-05-22 15:40:08.182451004 +0200
+++ /var/tmp/diff_new_pack.szrfg6/_new 2019-05-22 15:40:08.186451002 +0200
@@ -18,7 +18,7 @@
%define _version 1.22
Name: mate-calc
-Version: 1.22.0
+Version: 1.22.1
Release: 0
Summary: MATE Desktop calculator application
License: GPL-2.0-or-later
++++++ mate-calc-1.22.0.tar.xz -> mate-calc-1.22.1.tar.xz ++++++
++++ 34426 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package marco for openSUSE:Factory checked in at 2019-05-22 15:39:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/marco (Old)
and /work/SRC/openSUSE:Factory/.marco.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "marco"
Wed May 22 15:39:50 2019 rev:25 rq:704385 version:1.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/marco/marco.changes 2019-05-16 22:03:37.786646045 +0200
+++ /work/SRC/openSUSE:Factory/.marco.new.5148/marco.changes 2019-05-22 15:39:53.702461326 +0200
@@ -1,0 +2,13 @@
+Sun May 12 18:13:56 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.22.1:
+ * window: Set atom__NET_WM_STATE_FOCUSED for
+ meta_window_appears_focused.
+ * window: Make docks and spashscreens appear focused.
+ * Do not judge whether the window is decorated or not.
+ * screen: Fix use of memory after it is freed.
+ * [Security] Use "g_strlcpy" instead of "strcpy".
+ * compositor-xrender: Fix memory leak.
+ * Update translations.
+
+-------------------------------------------------------------------
Old:
----
marco-1.22.0.tar.xz
New:
----
marco-1.22.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ marco.spec ++++++
--- /var/tmp/diff_new_pack.XO1LMO/_old 2019-05-22 15:39:56.614455141 +0200
+++ /var/tmp/diff_new_pack.XO1LMO/_new 2019-05-22 15:39:56.618455139 +0200
@@ -20,7 +20,7 @@
%define sover 1
%define _version 1.22
Name: marco
-Version: 1.22.0
+Version: 1.22.1
Release: 0
Summary: MATE window manager
License: GPL-2.0-or-later
++++++ marco-1.22.0.tar.xz -> marco-1.22.1.tar.xz ++++++
++++ 15164 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package eom for openSUSE:Factory checked in at 2019-05-22 15:39:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/eom (Old)
and /work/SRC/openSUSE:Factory/.eom.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "eom"
Wed May 22 15:39:44 2019 rev:25 rq:704384 version:1.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/eom/eom.changes 2019-05-16 22:04:24.426602354 +0200
+++ /work/SRC/openSUSE:Factory/.eom.new.5148/eom.changes 2019-05-22 15:39:49.470471553 +0200
@@ -1,0 +2,11 @@
+Sun May 12 18:13:56 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.22.1:
+ * store: Add any image file in the current directory to the store.
+ * help: Update copyright.
+ * Upgrade the manual to docbook 5.0.
+ * Use persistent page setup.
+ * Update translations.
+- Rebase eom-gtk-3.20.patch.
+
+-------------------------------------------------------------------
Old:
----
eom-1.22.0.tar.xz
New:
----
eom-1.22.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ eom.spec ++++++
--- /var/tmp/diff_new_pack.Vq7PzA/_old 2019-05-22 15:39:51.602466401 +0200
+++ /var/tmp/diff_new_pack.Vq7PzA/_new 2019-05-22 15:39:51.606466391 +0200
@@ -19,7 +19,7 @@
%define typelib typelib-1_0-Eom-1_0
%define _version 1.22
Name: eom
-Version: 1.22.0
+Version: 1.22.1
Release: 0
Summary: MATE Desktop graphics viewer
License: GPL-2.0-or-later AND LGPL-2.1-or-later
++++++ eom-1.22.0.tar.xz -> eom-1.22.1.tar.xz ++++++
++++ 263921 lines of diff (skipped)
++++++ eom-gtk-3.20.patch ++++++
--- /var/tmp/diff_new_pack.Vq7PzA/_old 2019-05-22 15:39:52.906463250 +0200
+++ /var/tmp/diff_new_pack.Vq7PzA/_new 2019-05-22 15:39:52.906463250 +0200
@@ -67,6 +67,20 @@
}
static gboolean
+--- a/src/eom-list-store.c
++++ b/src/eom-list-store.c
+@@ -477,7 +477,11 @@ directory_visit (GFile *directory,
+
+ if (!g_str_has_prefix (name, ".")) {
+ /* We support opening any image type, so let eom to add any images in the current directory to the store */
++#if GLIB_CHECK_VERSION (2, 52, 0)
+ if (g_content_type_is_mime_type (mime_type, "image/*") || eom_image_is_supported_mime_type (mime_type)) {
++#else
++ if (g_content_type_is_a (mime_type, "image/*") || eom_image_is_supported_mime_type (mime_type)) {
++#endif
+ load_uri = TRUE;
+ }
+ }
--- a/src/eom-scroll-view.c
+++ b/src/eom-scroll-view.c
@@ -2241,8 +2241,14 @@ view_on_button_press_event_cb (GtkWidget
1
0
Hello community,
here is the log from the commit of package cobbler for openSUSE:Factory checked in at 2019-05-22 15:39:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cobbler (Old)
and /work/SRC/openSUSE:Factory/.cobbler.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cobbler"
Wed May 22 15:39:41 2019 rev:50 rq:704283 version:3.0.0+git20190510.d43461b3
Changes:
--------
--- /work/SRC/openSUSE:Factory/cobbler/cobbler.changes 2019-03-13 09:13:41.399396273 +0100
+++ /work/SRC/openSUSE:Factory/.cobbler.new.5148/cobbler.changes 2019-05-22 15:39:44.494483577 +0200
@@ -1,0 +2,216 @@
+Thu May 16 10:44:38 UTC 2019 - trenn(a)suse.de
+
+- Updated to latest git master branch
+commit d43461b39073ac01a54a3f52be0b133d36cb8061
+Author: Jochen Breuer <jbreuer(a)suse.de>
+Date: Fri May 10 16:41:32 2019 +0200
+ Remove already mainline patches:
+D fix-login-error.patch
+D remove-newline-from-token.diff
+D fixes-distro-none-case.diff
+D return-the-name-of-the-unknown-method.patch
+D call-with-logger-where-possible.patch
+D fix-http-status-code.patch
+D create-system-directory-at-the-correct-place.patch
+D remodeled-distro-detection.diff
+D disable_nsupdate_enabled_by_default.diff
+D power_system_xmlrpc_api.patch
+D renamed-methods-alias.patch
+D changes-return-to-float.diff
+D revert-redhat-management-removal.patch
+D add-docker-integration-testing.diff
+D refactor-unittest-to-pytest.diff
+D renamed-methods-alias-part2.patch
+D changes-detection-to-distro-like-for-suse-distributions.diff
+D rhn-mngmnt-key-field-fix.diff
+
+-------------------------------------------------------------------
+Thu May 16 08:46:16 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Re-enabling build for cobbler-test package.
+
+-------------------------------------------------------------------
+Wed May 15 13:16:42 UTC 2019 - trenn(a)suse.de
+
+- Integrated fixes that came in from mainline from other products
+ (to calm down obs regression checker):
+ CVE-2011-4953, fate#312397, bsc#660126, bsc#671212, bsc#672471, bsc#682665
+ bsc#687891, bsc#695955, bsc#722443, bsc#722445, bsc#757062, bsc#763610
+ bsc#783671, bsc#790545, bsc#796773, bsc#811025, bsc#812948, bsc#842699
+ bsc#846580, bsc#869371, bsc#884051, bsc#976826, bsc#984998
+
+-------------------------------------------------------------------
+Thu May 9 14:50:34 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Fix for redhat_management_key not being listed as a choice
+ during profile rename (bsc#1134588)
+
+- Added:
+ * rhn-mngmnt-key-field-fix.diff
+
+-------------------------------------------------------------------
+Tue May 7 13:00:33 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Fixes distribution detection in setup.py for SLESo
+
+- Added:
+ * changes-detection-to-distro-like-for-suse-distributions.diff
+
+-------------------------------------------------------------------
+Tue May 7 09:21:09 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Moving to pytest and adding Docker test integration
+
+- Added:
+ * add-docker-integration-testing.diff
+ * refactor-unittest-to-pytest.diff
+
+-------------------------------------------------------------------
+Tue May 7 08:13:34 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Additional compatability changes for old Koan versions.
+
+- Modified:
+ * renamed-methods-alias-part2.patch
+
+-------------------------------------------------------------------
+Tue Apr 30 14:16:17 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Old Koan versions not only need method aliases, but also need
+ compatible responses
+
+- Added:
+ * renamed-methods-alias-part2.patch
+
+-------------------------------------------------------------------
+Tue Apr 23 09:25:21 UTC 2019 - Enno Gotthold <egotthold(a)suse.com>
+
+- Add the redhat_managment_* fields again to enable templating in SUMA.
+
+- Added:
+ * revert-redhat-management-removal.patch
+
+-------------------------------------------------------------------
+Fri Apr 5 12:14:39 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Changes return of last_modified_time RPC to float
+
+- Added:
+ * changes-return-to-float.diff
+
+-------------------------------------------------------------------
+Thu Apr 4 14:13:02 CEST 2019 - mantel(a)suse.de
+
+- provide old name aliases for all renamed methods:
+ - get_distro_for_koan => get_distro_as_rendered
+ - get_profile_for_koan => get_profile_as_rendered
+ - get_system_for_koan => get_system_as_rendered
+ - get_repo_for_koan => get_repo_as_rendered
+ - get_image_for_koan => get_image_as_rendered
+ - get_mgmtclass_for_koan => get_mgmtclass_as_rendered
+ - get_package_for_koan => get_package_as_rendered
+ - get_file_for_koan => get_file_as_rendered
+
+- Renamed:
+ get_system_for_koan.patch => renamed-methods-alias.patch
+
+-------------------------------------------------------------------
+Thu Apr 4 10:18:05 CEST 2019 - mantel(a)suse.de
+
+- provide renamed method "get_system_for_koan" under old name
+ for old clients.
+
+- Added:
+ * get_system_for_koan.patch
+
+-------------------------------------------------------------------
+Thu Mar 28 11:31:36 UTC 2019 - Matei <malbu(a)suse.com>
+
+- Bring back power_system method in the XML-RPC API
+- Changed lanplus option to lanplus=true in fence_ipmitool.template
+
+- Added:
+ * power_system_xmlrpc_api.patch
+
+- Changed:
+ * fence_ipmitool.template
+
+-------------------------------------------------------------------
+Wed Mar 27 14:33:58 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Disables nsupdate_enabled by default
+
+- Added:
+ * disable_nsupdate_enabled_by_default.diff
+
+-------------------------------------------------------------------
+Wed Mar 27 12:50:12 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Fixes issue in distribution detection with "lower" function call.
+
+- Modified:
+ * remodeled-distro-detection.diff
+
+-------------------------------------------------------------------
+Tue Mar 26 09:29:03 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Adds imporoved distribution detection. Since now all base products
+ get detected correctly, we no longer need the SUSE Manager patch.
+
+- Added:
+ * remodeled-distro-detection.diff
+
+-------------------------------------------------------------------
+Sun Mar 24 17:06:54 UTC 2019 - Michael Calmer <mc(a)suse.com>
+
+- fix grub directory layout
+- Added:
+ * create-system-directory-at-the-correct-place.patch
+
+-------------------------------------------------------------------
+Sat Mar 23 13:36:07 UTC 2019 - Michael Calmer <mc(a)suse.com>
+
+- fix HTTP status code of XMLRPC service
+- Added:
+ * fix-http-status-code.patch
+
+-------------------------------------------------------------------
+Tue Mar 19 17:11:35 UTC 2019 - Michael Calmer <mc(a)suse.com>
+
+- touch /etc/genders when it not exists (bsc#1128926)
+- Add patches to fix logging
+
+- Added:
+ * return-the-name-of-the-unknown-method.patch
+ * call-with-logger-where-possible.patch
+
+-------------------------------------------------------------------
+Tue Mar 19 14:25:15 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Switching version schema from 3.0 to 3.0.0
+
+-------------------------------------------------------------------
+Tue Mar 12 16:08:08 UTC 2019 - Jochen Breuer <jbreuer(a)suse.de>
+
+- Fixes case where distribution detection returns None (bsc#1130658)
+
+- Added:
++++ 48 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/cobbler/cobbler.changes
++++ and /work/SRC/openSUSE:Factory/.cobbler.new.5148/cobbler.changes
Old:
----
adds_suse_manager_as_distro.diff
cobbler-3.0+git20190222.9e502a9d.tar.xz
fix-login-error.patch
New:
----
cobbler-3.0.0+git20190510.d43461b3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cobbler.spec ++++++
--- /var/tmp/diff_new_pack.D6huve/_old 2019-05-22 15:39:45.034482272 +0200
+++ /var/tmp/diff_new_pack.D6huve/_new 2019-05-22 15:39:45.038482263 +0200
@@ -25,13 +25,13 @@
%define _binaries_in_noarch_packages_terminate_build 0
%global debug_package %{nil}
Name: cobbler
-Version: 3.0+git20190222.9e502a9d
+Version: 3.0.0+git20190510.d43461b3
Release: 0
Summary: Boot server configurator
License: GPL-2.0-or-later
Group: Productivity/Networking/Boot/Servers
URL: https://cobbler.github.io/
-Source0: cobbler-%{version}.tar.xz
+Source0: cobbler-3.0.0+git20190510.d43461b3.tar.xz
# Manually generated AUTHORS file because the git repo is not included in the
# sources.
Source1: AUTHORS
@@ -39,9 +39,7 @@
Source3: fence_ipmitool.template
Patch0: fix_hardcoded_libpath_for_websession.patch
Patch1: fix_shebang.patch
-Patch2: adds_suse_manager_as_distro.diff
-# Pull Request: https://github.com/cobbler/cobbler/pull/2035
-Patch3: fix-login-error.patch
+
BuildRequires: Cheetah3
BuildRequires: apache-rpm-macros
BuildRequires: apache2
@@ -51,6 +49,7 @@
BuildRequires: python-rpm-macros
BuildRequires: python3
BuildRequires: python3-base
+BuildRequires: python3-distro
BuildRequires: python3-coverage
BuildRequires: python3-future
BuildRequires: python3-setuptools
@@ -60,7 +59,6 @@
Requires: acl
Requires: apache2-mod_wsgi-python3
Requires: fence-agents
-Requires: grub2-x86_64-efi
Requires: ipmitool
Requires: logrotate
Requires: mkisofs
@@ -81,6 +79,7 @@
Requires(post): grub2
#Requires(post): grub2-x86_64-efi
#Requires(post): grub2-powerpc-ieee1275
+Recommends: grub2-x86_64-efi
Recommends: grub2-i386-pc
Recommends: grub2-arm64-efi
Recommends: grub2-powerpc-ieee1275
@@ -120,11 +119,9 @@
http://server/cobbler_web to configure the install server.
%prep
-%setup -q
+%setup -q -n cobbler-%{version}
%patch0 -p1
%patch1 -p1
-%patch2 -p1
-%patch3 -p1
%build
%python_build
@@ -149,12 +146,19 @@
ln -s fence_ipmilan %{buildroot}/%{_sbindir}/fence_ipmitool
install -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/cobbler/power/fence_ipmitool.template
+%if 0%{?suse_version}
+cp -r tests/ $RPM_BUILD_ROOT/usr/share/cobbler/
+%endif
+
%fdupes %{buildroot}%{_prefix}
%pre
%service_add_pre cobblerd.service
%post
+if [ ! -e /etc/genders ]; then
+ touch /etc/genders
+fi
if [ $1 -eq 1 ] ; then
# Initial installation
sysconf_addword %{_sysconfdir}/sysconfig/apache2 APACHE_MODULES proxy
@@ -237,6 +241,7 @@
%{_bindir}/cobbler
%{_bindir}/cobbler-ext-nodes
%{_bindir}/cobblerd
+%{_datadir}/
%{_datadir}/%{name}/bin/mkgrub.sh
%{_datadir}/cobbler/web
%{_localstatedir}/log/cobbler
@@ -259,6 +264,8 @@
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/bin
+%exclude %dir %{_datadir}/%{name}/tests
+
%dir /srv/tftpboot/images
%files web
@@ -268,4 +275,22 @@
%defattr(-,%{apache_user},%{apache_group},-)
/%{www_path}/www/cobbler_webui_content/
+
+%if 0%{?suse_version}
+%package -n cobbler-tests
+
+Summary: Unit tests for Cobbler
+Group: Applications/System
+Requires: cobbler
+
+%description -n cobbler-tests
+
+Unit test files from the Cobbler project
+
+%files -n cobbler-tests
+%defattr(-,root,root,-)
+%exclude %dir %{_datadir}/%{name}
+%dir %{_datadir}/%{name}/tests
+%endif #suse_version
+
%changelog
++++++ _service ++++++
--- /var/tmp/diff_new_pack.D6huve/_old 2019-05-22 15:39:45.090482137 +0200
+++ /var/tmp/diff_new_pack.D6huve/_new 2019-05-22 15:39:45.090482137 +0200
@@ -5,7 +5,7 @@
<param name="revision">master</param>
<param name="changesgenerate">disable</param>
<param name="filename">cobbler</param>
- <param name="versionformat">3.0+git%cd.%h</param>
+ <param name="versionformat">3.0.0+git%cd.%h</param>
</service>
<service mode="disabled" name="recompress">
<param name="file">*.tar</param>
++++++ fence_ipmitool.template ++++++
--- /var/tmp/diff_new_pack.D6huve/_old 2019-05-22 15:39:45.114482078 +0200
+++ /var/tmp/diff_new_pack.D6huve/_new 2019-05-22 15:39:45.114482078 +0200
@@ -2,4 +2,4 @@
ipaddr=$power_address
login=$power_user
passwd=$power_pass
-lanplus
+lanplus=true
++++++ fix_hardcoded_libpath_for_websession.patch ++++++
--- /var/tmp/diff_new_pack.D6huve/_old 2019-05-22 15:39:45.126482050 +0200
+++ /var/tmp/diff_new_pack.D6huve/_new 2019-05-22 15:39:45.126482050 +0200
@@ -8,11 +8,11 @@
Signed-off-by: Thomas Renninger <trenn(a)suse.com>
-Index: cobbler-3.0/setup.py
+Index: cobbler-3.0.0+git20190510.d43461b3/setup.py
===================================================================
---- cobbler-3.0.orig/setup.py 2019-01-15 16:00:16.000000000 +0100
-+++ cobbler-3.0/setup.py 2019-01-15 17:16:05.508474760 +0100
-@@ -363,10 +363,6 @@ class install(_install):
+--- cobbler-3.0.0+git20190510.d43461b3.orig/setup.py 2019-05-10 16:41:32.000000000 +0200
++++ cobbler-3.0.0+git20190510.d43461b3/setup.py 2019-05-15 16:14:04.414735035 +0200
+@@ -364,10 +364,6 @@ class install(_install):
# Run the usual stuff.
_install.run(self)
@@ -23,7 +23,7 @@
# Hand over some directories to the webserver user
path = os.path.join(self.install_data, 'share/cobbler/web')
try:
-@@ -377,9 +373,7 @@ class install(_install):
+@@ -378,9 +374,7 @@ class install(_install):
if not os.path.abspath(libpath):
# The next line only works for absolute libpath
raise Exception("libpath is not absolute.")
1
0
Hello community,
here is the log from the commit of package python-jsondiff for openSUSE:Factory checked in at 2019-05-22 15:39:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jsondiff (Old)
and /work/SRC/openSUSE:Factory/.python-jsondiff.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jsondiff"
Wed May 22 15:39:39 2019 rev:2 rq:703808 version:1.1.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jsondiff/python-jsondiff.changes 2018-05-16 18:35:20.928848888 +0200
+++ /work/SRC/openSUSE:Factory/.python-jsondiff.new.5148/python-jsondiff.changes 2019-05-22 15:39:40.714492711 +0200
@@ -1,0 +2,15 @@
+Fri May 17 21:48:19 UTC 2019 - Scott Wulf <swulf(a)suse.com>
+
+- Removing conflict with jsonpatch
+ * Reasoning:
+ - moto requires cfn-lint and jsondiff
+ - cfn-lint requires jsonpatch
+
+
+-------------------------------------------------------------------
+Tue May 14 22:18:30 UTC 2019 - Gary Smith <GSmith(a)suse.com>
+
+- Upgraded to 1.1.2
+ * no changelog available
+
+-------------------------------------------------------------------
Old:
----
jsondiff-1.1.1.tar.gz
New:
----
jsondiff-1.1.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jsondiff.spec ++++++
--- /var/tmp/diff_new_pack.imvaYg/_old 2019-05-22 15:39:41.266491377 +0200
+++ /var/tmp/diff_new_pack.imvaYg/_new 2019-05-22 15:39:41.270491367 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jsondiff
#
-# Copyright (c) 2018 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,13 +12,13 @@
# 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/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-jsondiff
-Version: 1.1.1
+Version: 1.1.2
Release: 0
Summary: Diff JSON and JSON-like structures in Python
License: MIT
@@ -30,9 +30,6 @@
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-setuptools
-# provides the same jsondiff binary
-Conflicts: python2-jsonpatch
-Conflicts: python3-jsonpatch
BuildArch: noarch
%python_subpackages
++++++ jsondiff-1.1.1.tar.gz -> jsondiff-1.1.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsondiff-1.1.1/PKG-INFO new/jsondiff-1.1.2/PKG-INFO
--- old/jsondiff-1.1.1/PKG-INFO 2017-03-26 13:05:06.000000000 +0200
+++ new/jsondiff-1.1.2/PKG-INFO 2018-05-31 23:45:46.000000000 +0200
@@ -1,11 +1,12 @@
Metadata-Version: 1.1
Name: jsondiff
-Version: 1.1.1
+Version: 1.1.2
Summary: Diff JSON and JSON-like structures in Python
Home-page: https://github.com/ZoomerAnalytics/jsondiff
Author: Zoomer Analytics LLC
Author-email: eric.reynolds(a)zoomeranalytics.com
License: UNKNOWN
+Description-Content-Type: UNKNOWN
Description: UNKNOWN
Keywords: json,diff,diffing,difference,patch,delta,dict,LCS
Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsondiff-1.1.1/README.rst new/jsondiff-1.1.2/README.rst
--- old/jsondiff-1.1.1/README.rst 2016-12-05 10:57:24.000000000 +0100
+++ new/jsondiff-1.1.2/README.rst 2018-05-31 23:40:55.000000000 +0200
@@ -51,9 +51,7 @@
Command Line Client
-------------------
-Usage:
-
-.. code-block:: bash
+Usage::
jsondiff [-h] [-p] [-s SYNTAX] [-i INDENT] first second
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsondiff-1.1.1/jsondiff/__init__.py new/jsondiff-1.1.2/jsondiff/__init__.py
--- old/jsondiff-1.1.1/jsondiff/__init__.py 2017-03-26 13:04:14.000000000 +0200
+++ new/jsondiff-1.1.2/jsondiff/__init__.py 2018-05-31 23:41:25.000000000 +0200
@@ -1,4 +1,4 @@
-__version__ = '1.1.1'
+__version__ = '1.1.2'
import sys
import json
@@ -480,7 +480,7 @@
def _obj_diff(self, a, b):
if a is b:
return self.options.syntax.emit_value_diff(a, b, 1.0), 1.0
- if type(a) is dict and type(b) is dict:
+ if isinstance(a, dict) and isinstance(b, dict):
return self._dict_diff(a, b)
elif isinstance(a, tuple) and isinstance(b, tuple):
return self._list_diff(a, b)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsondiff-1.1.1/jsondiff.egg-info/PKG-INFO new/jsondiff-1.1.2/jsondiff.egg-info/PKG-INFO
--- old/jsondiff-1.1.1/jsondiff.egg-info/PKG-INFO 2017-03-26 13:05:06.000000000 +0200
+++ new/jsondiff-1.1.2/jsondiff.egg-info/PKG-INFO 2018-05-31 23:45:46.000000000 +0200
@@ -1,11 +1,12 @@
Metadata-Version: 1.1
Name: jsondiff
-Version: 1.1.1
+Version: 1.1.2
Summary: Diff JSON and JSON-like structures in Python
Home-page: https://github.com/ZoomerAnalytics/jsondiff
Author: Zoomer Analytics LLC
Author-email: eric.reynolds(a)zoomeranalytics.com
License: UNKNOWN
+Description-Content-Type: UNKNOWN
Description: UNKNOWN
Keywords: json,diff,diffing,difference,patch,delta,dict,LCS
Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsondiff-1.1.1/setup.cfg new/jsondiff-1.1.2/setup.cfg
--- old/jsondiff-1.1.1/setup.cfg 2017-03-26 13:05:06.000000000 +0200
+++ new/jsondiff-1.1.2/setup.cfg 2018-05-31 23:45:46.000000000 +0200
@@ -1,5 +1,4 @@
[egg_info]
tag_build =
tag_date = 0
-tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsondiff-1.1.1/tests/generate_readme.py new/jsondiff-1.1.2/tests/generate_readme.py
--- old/jsondiff-1.1.1/tests/generate_readme.py 2015-12-04 16:37:44.000000000 +0100
+++ new/jsondiff-1.1.2/tests/generate_readme.py 2018-05-31 23:40:55.000000000 +0200
@@ -1,12 +1,14 @@
-# this file doesn't work in Py3 - but it's only used for generating the repo front page
+# this is used for generating the repo front page
+
+from __future__ import print_function
def do(cmd, comment=None):
if comment:
- print "# " + comment
- print ">>> " + cmd
+ print("# " + comment)
+ print(">>> " + cmd)
c = compile(cmd, filename="<string>", mode='single')
eval(c, globals())
- print
+ print()
do('from jsondiff import diff')
@@ -26,5 +28,5 @@
do("diff({'a', 'b', 'c'}, {'a', 'c', 'd'})", "Special handling of sets")
-do("print diff('[\"a\", \"b\", \"c\"]', '[\"a\", \"c\", \"d\"]', load=True, dump=True)", "Load and dump JSON")
+do("print(diff('[\"a\", \"b\", \"c\"]', '[\"a\", \"c\", \"d\"]', load=True, dump=True))", "Load and dump JSON")
1
0
Hello community,
here is the log from the commit of package python-magic-wormhole for openSUSE:Factory checked in at 2019-05-22 15:39:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-magic-wormhole (Old)
and /work/SRC/openSUSE:Factory/.python-magic-wormhole.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-magic-wormhole"
Wed May 22 15:39:35 2019 rev:3 rq:703722 version:0.11.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-magic-wormhole/python-magic-wormhole.changes 2018-12-24 11:39:31.057551899 +0100
+++ /work/SRC/openSUSE:Factory/.python-magic-wormhole.new.5148/python-magic-wormhole.changes 2019-05-22 15:39:37.454500588 +0200
@@ -1,0 +2,15 @@
+Fri May 17 12:13:08 UTC 2019 - Marketa Calabkova <mcalabkova(a)suse.com>
+
+- Update to version 0.11.2
+ * Fix python -m wormhole on py2.
+ * Python-3.7 compatibility was fixed.
+ * The client version is now sent to the mailbox server for each
+ connection.
+ Packaging changes:
+ * We removed the Rendezvous Server (now named the "Mailbox
+ Server") out to a separate package and repository named
+ magic-wormhole-mailbox-server.
+ * The Dockerfile was removed.
+- Launch tests again.
+
+-------------------------------------------------------------------
Old:
----
magic-wormhole-0.10.5.tar.gz
New:
----
magic-wormhole-0.11.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-magic-wormhole.spec ++++++
--- /var/tmp/diff_new_pack.AQ8IVr/_old 2019-05-22 15:39:38.278498597 +0200
+++ /var/tmp/diff_new_pack.AQ8IVr/_new 2019-05-22 15:39:38.282498588 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-magic-wormhole
#
-# Copyright (c) 2018 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
@@ -19,37 +19,41 @@
%{?!python_module:%define python_module() %{!?skip_python2:python-%{**}} %{!?skip_python3:python3-%{**}}}
%define modname magic-wormhole
Name: python-magic-wormhole
-Version: 0.10.5
+Version: 0.11.2
Release: 0
Summary: Securely transfer data between computers
License: MIT
Group: Development/Languages/Python
-Url: https://github.com/warner/magic-wormhole
+URL: https://github.com/warner/magic-wormhole
Source: https://files.pythonhosted.org/packages/source/m/magic-wormhole/%{modname}-…
+BuildRequires: %{python_module Automat}
+BuildRequires: %{python_module PyNaCl}
+BuildRequires: %{python_module click}
+BuildRequires: %{python_module hkdf}
+BuildRequires: %{python_module humanize}
+BuildRequires: %{python_module magic-wormhole-mailbox-server}
+BuildRequires: %{python_module magic-wormhole-transit-relay}
+BuildRequires: %{python_module mock}
+BuildRequires: %{python_module pytest}
BuildRequires: %{python_module service_identity}
BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module spake2 >= 0.8}
+BuildRequires: %{python_module tqdm >= 4.13.0}
+BuildRequires: %{python_module txtorcon >= 0.19.3}
BuildRequires: fdupes
-BuildRequires: python-rpm-macros
Requires: python-Automat
Requires: python-PyNaCl
-Requires: python-Twisted >= 17.5.0
-Requires: python-attrs >= 16.3.0
-Requires: python-autobahn >= 0.14.1
Requires: python-click
Requires: python-hkdf
Requires: python-humanize
+Requires: python-magic-wormhole-mailbox-server
Requires: python-service_identity
-Requires: python-six
-Requires: python-spake2 = 0.8
+Requires: python-spake2 >= 0.8
Requires: python-tqdm >= 4.13.0
Requires: python-txtorcon >= 0.19.3
-Suggests: python-magic-wormhole-transit-relay = 0.1.0
+Suggests: python-magic-wormhole-transit-relay
Suggests: python-mock
-Suggests: python-pyflakes
-Suggests: python-pypiwin32
-Suggests: python-tox
BuildArch: noarch
-
%python_subpackages
%description
@@ -69,15 +73,15 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%python_clone %{buildroot}%{_bindir}/wormhole
-%python_clone %{buildroot}%{_bindir}/wormhole-server
+
+%check
+%pytest src/wormhole/test
%files %{python_files}
%license LICENSE
%doc NEWS.md README.md
%{_bindir}/wormhole-%{python_bin_suffix}
-%{_bindir}/wormhole-server-%{python_bin_suffix}
%python3_only %{_bindir}/wormhole
-%python3_only %{_bindir}/wormhole-server
%{python_sitelib}/*
%changelog
++++++ magic-wormhole-0.10.5.tar.gz -> magic-wormhole-0.11.2.tar.gz ++++++
++++ 16097 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-testinfra for openSUSE:Factory checked in at 2019-05-22 15:39:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-testinfra (Old)
and /work/SRC/openSUSE:Factory/.python-testinfra.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-testinfra"
Wed May 22 15:39:31 2019 rev:5 rq:703551 version:3.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-testinfra/python-testinfra.changes 2018-12-24 11:45:09.413251891 +0100
+++ /work/SRC/openSUSE:Factory/.python-testinfra.new.5148/python-testinfra.changes 2019-05-22 15:39:34.302508205 +0200
@@ -1,0 +2,50 @@
+Thu May 16 20:39:31 UTC 2019 - ranand(a)suse.com
+
+- Removed _multibuild, not needed here.
+
+-------------------------------------------------------------------
+Thu May 16 20:27:54 UTC 2019 - ranand(a)suse.com
+
+- update to version 3.0.3
+ 3.0.3
+ * Fix paramiko parsing RequestTTY from ssh configs
+ * Re-add "groups" key from ansible.get_variables()
+ to be backward compatible with testinfra 2.X
+ 3.0.2
+ * Fix ansible with no inventory resolving to "localhost"
+ * Fix support for ansible 2.8 with no inventory
+ * Fix ansible/paramiko which wasn't reading hosts config
+ from ~/.ssh/config
+ * Allow to pass --ssh-config and --ssh-identity-file to
+ ansible connection
+ 3.0.1
+ * Fix parsing of ipv6 adresses for paramiko, ssh and
+ ansible backends.
+ * Fix --connection=ansible invocation when no hosts are provided
+ 3.0.0
+ * New ansible backend fixing support for ansible 2.8 and
+ license issue.
+ * Windows support is improved.
+
+-------------------------------------------------------------------
+Tue Apr 16 10:10:11 UTC 2019 - Marketa Calabkova <mcalabkova(a)suse.com>
+
+- update to version 2.1.0
+ * socket: fix parsing of ipv6 addresses with new versions of ss
+ * Add addr module, used to test network connectivity
+ * Drop deprecated "testinfra" command, you should use "py.test"
+ instead
+ * Drop support for ansible <= 2.4
+ * Drop deprecated top level fixtures, access them through the
+ fixture "host" instead.
+ 1.1?.0
+ * Fix pytest 4 compatibility
+ * Allow to urlencode character in host specification "user:pass@host"
+ * Drop support for python 2.6
+ * Allow to configure timeouts for winrm backend
+ * Add support for ansible "become" user in ansible module
+ * packaging: Use setuptools_scm instead of pbr
+ * iptables: add ip6tables support
+ * Fix no_ssl and no_verify_ssl options for WinRM backend
+
+-------------------------------------------------------------------
Old:
----
testinfra-1.14.0.tar.gz
New:
----
testinfra-3.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-testinfra.spec ++++++
--- /var/tmp/diff_new_pack.P2g74v/_old 2019-05-22 15:39:34.902506756 +0200
+++ /var/tmp/diff_new_pack.P2g74v/_new 2019-05-22 15:39:34.902506756 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-testinfra
#
-# Copyright (c) 2018 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,30 +12,32 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-testinfra
-Version: 1.14.0
+Version: 3.0.3
Release: 0
Summary: Test infrastructures
License: Apache-2.0
Group: Development/Languages/Python
Url: http://github.com/philpep/testinfra
Source: https://files.pythonhosted.org/packages/source/t/testinfra/testinfra-%{vers…
-BuildRequires: %{python_module pbr}
+BuildRequires: %{python_module paramiko}
+BuildRequires: %{python_module pytest}
+BuildRequires: %{python_module pywinrm}
+BuildRequires: %{python_module salt}
+BuildRequires: %{python_module setuptools_scm}
BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module six >= 1.4}
+BuildRequires: ansible > 2.4
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires(post): update-alternatives
-Requires(postun): update-alternatives
Requires: python-pytest
Requires: python-six >= 1.4
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
-
%python_subpackages
%description
@@ -54,20 +56,16 @@
%install
%python_install
-%python_clone -a %{buildroot}%{_bindir}/testinfra
%python_expand %fdupes %{buildroot}%{$python_sitelib}/testinfra
-%post
-%python_install_alternative testinfra
-
-%postun
-%python_uninstall_alternative testinfra
+%check
+export LANG=en_US.UTF-8
+#ansible does not exist at python2
+%pytest -k "not test_backend_importables"
%files %{python_files}
-%defattr(-,root,root,-)
%doc CHANGELOG.rst README.rst
%license LICENSE
-%python_alternative %{_bindir}/testinfra
%{python_sitelib}/*
%changelog
++++++ testinfra-1.14.0.tar.gz -> testinfra-3.0.3.tar.gz ++++++
++++ 3232 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-autobahn for openSUSE:Factory checked in at 2019-05-22 15:39:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-autobahn (Old)
and /work/SRC/openSUSE:Factory/.python-autobahn.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-autobahn"
Wed May 22 15:39:27 2019 rev:6 rq:703027 version:19.5.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-autobahn/python-autobahn.changes 2019-05-06 13:21:25.052540105 +0200
+++ /work/SRC/openSUSE:Factory/.python-autobahn.new.5148/python-autobahn.changes 2019-05-22 15:39:29.386520085 +0200
@@ -1,0 +2,20 @@
+Tue May 14 22:26:05 UTC 2019 - Jonathan Harker <jharker(a)suse.com>
+
+- Update to 19.5.1
+ * fix: authextra merging (#1191)
+ * fix: set default retry_delay_jitter (#1190)
+ * new: add rawsocket + twisted example (#1189)
+ * new: WebSocket testing support, via Agent-style interface (#1186)
+ * new: decorator for on_connectfailure
+ * fix: delayed call leakage (#1152)
+ * new: CLI client (#1150)
+ * fix: set up TLS over proxy properly (#1149)
+ * new: expose ser modules (#1148)
+ * fix: base64 encodings, add hex encoding (#1146)
+ * new: onConnecting callback (with TransportDetails and ConnectingRequest).
+ Note: if you've implemented a pure IWebSocketChannel without inheriting
+ from Autobahn base classes, you'll need to add an onConnecting() method
+ that just does return None.
+
+
+-------------------------------------------------------------------
Old:
----
autobahn-19.3.3.tar.gz
New:
----
autobahn-19.5.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-autobahn.spec ++++++
--- /var/tmp/diff_new_pack.Y4GXj6/_old 2019-05-22 15:39:31.018516140 +0200
+++ /var/tmp/diff_new_pack.Y4GXj6/_new 2019-05-22 15:39:31.018516140 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} %{!?skip_python3:python3-%{**}}}
Name: python-autobahn
-Version: 19.3.3
+Version: 19.5.1
Release: 0
Summary: WebSocket and WAMP in Python for Twisted and asyncio
License: MIT
@@ -104,11 +104,13 @@
export USE_ASYNCIO=true
export AUTOBAHN_USE_NVX=true
export PYTHONDONTWRITEBYTECODE=1
-%pytest_arch %{buildroot}%{$python_sitearch}/autobahn/
+export PY_IGNORE_IMPORTMISMATCH=1
+%pytest_arch
%files %{python_files}
%license LICENSE
%doc README.rst
%{python_sitearch}/*
+%python3_only /usr/bin/wamp
%changelog
++++++ autobahn-19.3.3.tar.gz -> autobahn-19.5.1.tar.gz ++++++
++++ 1748 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-sigal for openSUSE:Factory checked in at 2019-05-22 15:39:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-sigal (Old)
and /work/SRC/openSUSE:Factory/.python-sigal.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-sigal"
Wed May 22 15:39:24 2019 rev:5 rq:703020 version:2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-sigal/python-sigal.changes 2018-12-24 11:43:58.337314872 +0100
+++ /work/SRC/openSUSE:Factory/.python-sigal.new.5148/python-sigal.changes 2019-05-22 15:39:24.222532562 +0200
@@ -1,0 +2,9 @@
+Tue May 14 21:14:02 UTC 2019 - svasudevan(a)suse.com
+
+- Update to 2.0
+ * no new changelog found
+ * Removed support for python2
+ * Updated the spec file to run python tests
+ * Skipped couple of tests that are related to mpg.
+
+-------------------------------------------------------------------
Old:
----
sigal-1.4.0.tar.gz
New:
----
sigal-2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-sigal.spec ++++++
--- /var/tmp/diff_new_pack.XbLutT/_old 2019-05-22 15:39:25.002530678 +0200
+++ /var/tmp/diff_new_pack.XbLutT/_new 2019-05-22 15:39:25.006530668 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-sigal
#
-# Copyright (c) 2018 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,19 +12,20 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
+%define skip_python2 1
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%bcond_without test
Name: python-sigal
-Version: 1.4.0
+Version: 2.0
Release: 0
Summary: Static gallery generator
License: MIT
Group: Development/Languages/Python
-URL: https://github.com/saimn/sigal
+Url: https://github.com/saimn/sigal
Source: https://files.pythonhosted.org/packages/source/s/sigal/sigal-%{version}.tar…
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
@@ -45,6 +46,8 @@
BuildRequires: %{python_module blinker}
BuildRequires: %{python_module click}
BuildRequires: %{python_module pilkit}
+BuildRequires: %{python_module pytest}
+BuildRequires: ffmpeg
%endif
%python_subpackages
@@ -71,6 +74,9 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
+%check
+%pytest tests -k "not (test_generate_video_fit_height or test_generate_video_fit_width or test_generate_video_dont_enlarge or test_build)"
+
%files %{python_files}
%license LICENSE
%doc AUTHORS README.rst
++++++ sigal-1.4.0.tar.gz -> sigal-2.0.tar.gz ++++++
++++ 20976 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-pyfiglet for openSUSE:Factory checked in at 2019-05-22 15:39:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyfiglet (Old)
and /work/SRC/openSUSE:Factory/.python-pyfiglet.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyfiglet"
Wed May 22 15:39:21 2019 rev:3 rq:701748 version:0.8.post1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyfiglet/python-pyfiglet.changes 2018-12-14 20:56:11.760815255 +0100
+++ /work/SRC/openSUSE:Factory/.python-pyfiglet.new.5148/python-pyfiglet.changes 2019-05-22 15:39:22.734536158 +0200
@@ -1,0 +2,11 @@
+Wed May 8 17:49:32 UTC 2019 - John Vandenberg <jayvdb(a)gmail.com>
+
+- Activate test suite
+- Remove tests from runtime package
+- Install manpage and add doc/figfont.txt to %doc
+- Update to v0.8
+ * Change LICENSE to MIT
+ * Provide font installation option (-L) and remove
+ unlicenced fonts from the distribution
+
+-------------------------------------------------------------------
Old:
----
pyfiglet-0.7.6.tar.gz
New:
----
pyfiglet-0.8.post1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pyfiglet.spec ++++++
--- /var/tmp/diff_new_pack.3g06PA/_old 2019-05-22 15:39:23.402534544 +0200
+++ /var/tmp/diff_new_pack.3g06PA/_new 2019-05-22 15:39:23.406534535 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-pyfiglet
#
-# Copyright (c) 2018 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
@@ -18,15 +18,16 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pyfiglet
-Version: 0.7.6
+Version: 0.8.post1
Release: 0
Summary: Pure Python FIGlet implementation
-License: GPL-2.0-or-later
+License: MIT
Group: Development/Languages/Python
Url: https://github.com/pwaller/pyfiglet
Source: https://files.pythonhosted.org/packages/source/p/pyfiglet/pyfiglet-%{versio…
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
+BuildRequires: figlet
BuildRequires: python-rpm-macros
BuildArch: noarch
@@ -38,23 +39,33 @@
%prep
%setup -q -n pyfiglet-%{version}
-sed -i -e '/^#!\//, 1d' pyfiglet/__init__.py pyfiglet/test.py
+sed -i -e '1{/^#!/d}' pyfiglet/__init__.py
+mv pyfiglet/test.py .
%build
%python_build
%install
%python_install
+
+install -d -m 0755 %{buildroot}%{_mandir}/man1
+install -m 0644 doc/pyfiglet.1 %{buildroot}%{_mandir}/man1/
+
%python_expand %fdupes %{buildroot}%{$python_sitelib}
+
# Fix python-bytecode-inconsistent-mtime
%python_expand $python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/pyfiglet/fonts/
%python_expand $python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/pyfiglet/fonts/
%python_expand %fdupes %{buildroot}%{$python_sitelib}
+%check
+%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} $python test.py
+
%files %{python_files}
-%doc README
+%doc README doc/figfont.txt
%license LICENSE
%python3_only %{_bindir}/pyfiglet
+%python3_only %{_mandir}/man1/pyfiglet.1*
%{python_sitelib}/*
%changelog
1
0
Hello community,
here is the log from the commit of package python-moviepy for openSUSE:Factory checked in at 2019-05-22 15:38:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-moviepy (Old)
and /work/SRC/openSUSE:Factory/.python-moviepy.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-moviepy"
Wed May 22 15:38:46 2019 rev:6 rq:698245 version:1.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-moviepy/python-moviepy.changes 2019-01-24 14:14:12.027308044 +0100
+++ /work/SRC/openSUSE:Factory/.python-moviepy.new.5148/python-moviepy.changes 2019-05-22 15:38:48.126585539 +0200
@@ -1,0 +2,16 @@
+Fri Apr 19 16:19:00 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to 1.0.0
+ * fix typo that introduces audio regression
+ * added dependencies so python2.7 will survive as long as
+ imageio supports it
+ * new version of imageio with imageio_ffmpeg
+ * removed unused imageio.ffmpeg_download()
+ * Progress bars and messages now with Proglog
+ * fixing the git remote syntax
+ * modified max duration error for better understanding
+ * added requests as a core dependency
+ * FIX changed order of specifications -ss befor -i for
+ ffmpeg_extract_subclip()
+
+-------------------------------------------------------------------
Old:
----
moviepy-0.2.3.5.tar.gz
New:
----
moviepy-1.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-moviepy.spec ++++++
--- /var/tmp/diff_new_pack.0rXp2y/_old 2019-05-22 15:38:48.686585377 +0200
+++ /var/tmp/diff_new_pack.0rXp2y/_new 2019-05-22 15:38:48.690585376 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-moviepy
#
-# Copyright (c) 2018 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
@@ -19,14 +19,14 @@
%define modname moviepy
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-Name: python-%{modname}
-Version: 0.2.3.5
+Name: python-moviepy
+Version: 1.0.0
Release: 0
Summary: Video editing with Python
License: MIT
Group: Development/Languages/Python
-Url: https://github.com/Zulko/%{modname}
-Source: https://files.pythonhosted.org/packages/source/m/%{modname}/%{modname}-%{ve…
+Url: https://github.com/Zulko/moviepy
+Source: https://files.pythonhosted.org/packages/source/m/moviepy/moviepy-%{version}…
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -35,9 +35,9 @@
BuildRequires: %{python_module coveralls >= 1.1}
BuildRequires: %{python_module cryptography}
BuildRequires: %{python_module decorator >= 4.0.2}
-BuildRequires: %{python_module imageio >= 2.1.2}
BuildRequires: %{python_module numpy}
BuildRequires: %{python_module opencv >= 3.0}
+BuildRequires: %{python_module proglog}
BuildRequires: %{python_module pyOpenSSL >= 0.14}
BuildRequires: %{python_module pytest >= 3.0.0}
BuildRequires: %{python_module pytest-cov >= 2.5.1}
@@ -46,18 +46,28 @@
BuildRequires: ImageMagick
BuildRequires: ffmpeg
BuildRequires: python-ipaddress
+BuildRequires: python-imageio >= 2.0
+BuildRequires: python3-imageio >= 2.5
+BuildRequires: python3-imageio-ffmpeg >= 0.2.0
# /SECTION
Requires: python-decorator >= 4.0.2
-Requires: python-imageio >= 2.1.2
Requires: python-numpy
+Requires: python-proglog
+Requires: python-requests >= 2.8.1
Requires: python-tqdm >= 4.11.2
+%ifpython2
+Requires: python-imageio >= 2.1.2
+%endif
+%ifpython3
+Requires: python-imageio >= 2.5
+Requires: python-imageio-ffmpeg >= 0.2.0
+%endif
Recommends: ImageMagick
Recommends: ffmpeg
Recommends: python-Pillow
Recommends: python-matplotlib >= 2.0.0
Recommends: python-opencv >= 3.0
Recommends: python-pygame >= 1.9.3
-Recommends: python-requests >= 2.8.1
Recommends: python-scikit-image >= 0.13.0
Recommends: python-scikit-learn
Recommends: python-scipy >= 0.19.0
@@ -73,7 +83,7 @@
effects.
%prep
-%setup -q -n %{modname}-%{version}
+%setup -q -n moviepy-%{version}
%build
%python_build
@@ -82,12 +92,12 @@
%python_install
%python_expand rm -rf %{buildroot}%{$python_sitelib}/tests
%{python_expand %fdupes %{buildroot}%{$python_sitelib}
-$python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/%{modname}/audio/
-$python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/%{modname}/audio/
-$python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/%{modname}/video/
-$python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/%{modname}/video/
-$python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/%{modname}/video/compositing/
-$python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/%{modname}/video/compositing/
+$python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/moviepy/audio/
+$python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/moviepy/audio/
+$python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/moviepy/video/
+$python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/moviepy/video/
+$python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/moviepy/video/compositing/
+$python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/moviepy/video/compositing/
%fdupes %{buildroot}%{$python_sitelib}
}
@@ -97,6 +107,6 @@
%files %{python_files}
%doc README.rst
%license LICENCE.txt
-%{python_sitelib}/%{modname}*
+%{python_sitelib}/moviepy*
%changelog
++++++ moviepy-0.2.3.5.tar.gz -> moviepy-1.0.0.tar.gz ++++++
++++ 2644 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-imageio for openSUSE:Factory checked in at 2019-05-22 15:38:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-imageio (Old)
and /work/SRC/openSUSE:Factory/.python-imageio.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-imageio"
Wed May 22 15:38:42 2019 rev:6 rq:698244 version:2.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-imageio/python-imageio.changes 2019-03-26 15:44:24.512150786 +0100
+++ /work/SRC/openSUSE:Factory/.python-imageio.new.5148/python-imageio.changes 2019-05-22 15:38:45.138586402 +0200
@@ -1,0 +2,38 @@
+Wed Apr 17 15:16:25 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- update to version 2.5.0
+ + The ffmpeg plugin has been refactored:
+ * The core has been moved to a new library: imageio-ffmpeg.
+ * That library provides platform-specific wheels that includes ffmpeg,
+ so just ``pip install imageio-ffmpeg`` instead of the download step.
+ * Note that this new library is py3k only.
+ * Termination of ffmpeg subprocess is now more reliable.
+ * The reader of the ffmpeg plugin now always reports ``inf`` as the number of
+ frames. Use ``reader.count_frames()`` to get the actual number, or estimate
+ it from the fps and duration in the meta data.
+ * Removed ``CannotReadFrameError``.
+ + Other changes:
+ * The avbin plugin has been depreacted and will be removed in a future version.
+ * Imnproved speed for PIL and FFMPEG plugsins by avoiding memory copies.
+ * Update the included tiffile library.
+ * Support for SimpleITK.
+ * Speed up tiffile plugin when writing to something else than a filename.
+ * Fix that writing to a file object would not work for some plugins.
+ * Can now pass image data to the write functions as anything that resolves to
+ a numpy array with a numeric dtype.
+ * One can now read from a memoryview.
+ * Fix error related to paletted BMP with the Pillow plugin.
+ * Improved logging.
+- update to version 2.4.1
+ * Fix installation issue on flavors of Ubuntu 14.04 /w Python 2.7 (#378).
+ * Use `np.frombuffer` instead of `np.fromstring` in some cases.
+- update to version 2.4.0
+ * Renamed ``Image`` class to ``Array`` and add documentation for this ndarray subclass.
+ * Reading from HTTP and zipfiles has been improved and better documented.
+ * Improvements to reading and writing of Tiff metadata (by Lukas Schrangl).
+ * Better dealing of tifffile dependencies on Python 2.7 (#330 and #337 by Chris Barnes).
+ * Reader for the SPE format (#358 by lschr).
+ * Better termination of FFMPEG when reading from webcam (#346 by Dennis Vang).
+ * FFMPEG support for reading 16bit videos (#342 by Peter Minin).
+
+-------------------------------------------------------------------
Old:
----
imageio-2.3.0.tar.gz
New:
----
imageio-2.5.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-imageio.spec ++++++
--- /var/tmp/diff_new_pack.HuOwBB/_old 2019-05-22 15:38:45.898586182 +0200
+++ /var/tmp/diff_new_pack.HuOwBB/_new 2019-05-22 15:38:45.898586182 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-imageio
-Version: 2.3.0
+Version: 2.5.0
Release: 0
Summary: Python library for reading and writing image, video, and related formats
License: BSD-2-Clause
@@ -29,10 +29,12 @@
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: ffmpeg
Requires: python-numpy
Recommends: python-Pillow
Recommends: libfreeimageplus3
+%ifpython3
+Requires: python-imageio-ffmpeg
+%endif
BuildArch: noarch
# There are many other optional dependencies, but they are skipped anyway
BuildRequires: %{python_module Pillow}
@@ -40,6 +42,7 @@
BuildRequires: %{python_module psutil}
BuildRequires: %{python_module pytest}
BuildRequires: python-enum34
+BuildRequires: python3-imageio-ffmpeg
%python_subpackages
%description
@@ -68,11 +71,11 @@
%check
pushd tests
export IMAGEIO_NO_INTERNET=1
-PYTHONPATH=%{buildroot}%{python2_sitelib} python2 -m pytest -k 'not test_fei_file_fail'
+PYTHONPATH=%{buildroot}%{python2_sitelib} python2 -m pytest -k 'not test_fei_file_fail and not test_ffmpeg'
%if %{python3_version_nodots} == 37
-PYTHONPATH=%{buildroot}%{python3_sitelib} python3 -m pytest -k 'not test_series_unclosed and not test_import_dependencies'
+PYTHONPATH=%{buildroot}%{python3_sitelib} python3 -m pytest -k 'not test_series_unclosed and not test_import_dependencies and not test_ffmpeg'
%else
-PYTHONPATH=%{buildroot}%{python3_sitelib} python3 -m pytest -k 'not test_import_dependencies'
+PYTHONPATH=%{buildroot}%{python3_sitelib} python3 -m pytest -k 'not test_import_dependencies and not test_ffmpeg'
%endif
popd
++++++ imageio-2.3.0.tar.gz -> imageio-2.5.0.tar.gz ++++++
++++ 27080 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package yast2-storage-ng for openSUSE:Factory checked in at 2019-05-22 15:38:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-storage-ng (Old)
and /work/SRC/openSUSE:Factory/.yast2-storage-ng.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-storage-ng"
Wed May 22 15:38:03 2019 rev:52 rq:704655 version:4.2.16
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-storage-ng/yast2-storage-ng.changes 2019-05-14 13:14:01.832895785 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-storage-ng.new.5148/yast2-storage-ng.changes 2019-05-22 15:38:05.226597926 +0200
@@ -1,0 +2,7 @@
+Thu May 16 10:38:16 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Partitioner: allow to resize devices used by a multi-device
+ Btrfs filesystem (part of jsc#SLE-3877).
+- 4.2.16
+
+-------------------------------------------------------------------
Old:
----
yast2-storage-ng-4.2.15.tar.bz2
New:
----
yast2-storage-ng-4.2.16.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-storage-ng.spec ++++++
--- /var/tmp/diff_new_pack.6iwPmc/_old 2019-05-22 15:38:05.946597718 +0200
+++ /var/tmp/diff_new_pack.6iwPmc/_new 2019-05-22 15:38:05.954597716 +0200
@@ -17,7 +17,7 @@
Name: yast2-storage-ng
-Version: 4.2.15
+Version: 4.2.16
Release: 0
Summary: YaST2 - Storage Configuration
License: GPL-2.0-only OR GPL-3.0-only
@@ -25,8 +25,8 @@
Source: %{name}-%{version}.tar.bz2
Url: https://github.com/yast/yast-storage-ng
-# Multidevice Btrfs
-BuildRequires: libstorage-ng-ruby >= 4.1.118
+# Resize multi-device Btrfs
+BuildRequires: libstorage-ng-ruby >= 4.1.121
BuildRequires: update-desktop-files
# CWM::Dialog#next_handler (4.1 branch) and improved CWM::Dialog
BuildRequires: yast2 >= 4.1.11
@@ -42,8 +42,8 @@
BuildRequires: rubygem(yast-rake)
# findutils for xargs
Requires: findutils
-# Multidevice Btrfs
-Requires: libstorage-ng-ruby >= 4.1.118
+# Resize multi-device Btrfs
+Requires: libstorage-ng-ruby >= 4.1.121
# CWM::Dialog#next_handler (4.1 branch) and improved CWM::Dialog
Requires: yast2 >= 4.1.11
# Y2Packager::Repository
++++++ yast2-storage-ng-4.2.15.tar.bz2 -> yast2-storage-ng-4.2.16.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/yast2-storage-ng/yast2-storage-ng-4.2.15.tar.bz2 /work/SRC/openSUSE:Factory/.yast2-storage-ng.new.5148/yast2-storage-ng-4.2.16.tar.bz2 differ: char 11, line 1
1
0
Hello community,
here is the log from the commit of package yast2-packager for openSUSE:Factory checked in at 2019-05-22 15:37:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-packager (Old)
and /work/SRC/openSUSE:Factory/.yast2-packager.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-packager"
Wed May 22 15:37:54 2019 rev:375 rq:704635 version:4.2.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-packager/yast2-packager.changes 2019-05-15 12:23:55.142165895 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-packager.new.5148/yast2-packager.changes 2019-05-22 15:37:56.366600484 +0200
@@ -1,0 +2,7 @@
+Tue May 21 15:19:38 CEST 2019 - schubi(a)suse.de
+
+- List of Online Repositories: Overwrite already existing repos in
+ "new installation" mode (bsc#1132622).
+- 4.2.7
+
+-------------------------------------------------------------------
Old:
----
yast2-packager-4.2.6.tar.bz2
New:
----
yast2-packager-4.2.7.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-packager.spec ++++++
--- /var/tmp/diff_new_pack.HAB23X/_old 2019-05-22 15:37:57.482600162 +0200
+++ /var/tmp/diff_new_pack.HAB23X/_new 2019-05-22 15:37:57.490600159 +0200
@@ -17,7 +17,7 @@
Name: yast2-packager
-Version: 4.2.6
+Version: 4.2.7
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ yast2-packager-4.2.6.tar.bz2 -> yast2-packager-4.2.7.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.2.6/package/yast2-packager.changes new/yast2-packager-4.2.7/package/yast2-packager.changes
--- old/yast2-packager-4.2.6/package/yast2-packager.changes 2019-05-14 16:57:19.000000000 +0200
+++ new/yast2-packager-4.2.7/package/yast2-packager.changes 2019-05-22 09:15:05.000000000 +0200
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Tue May 21 15:19:38 CEST 2019 - schubi(a)suse.de
+
+- List of Online Repositories: Overwrite already existing repos in
+ "new installation" mode (bsc#1132622).
+- 4.2.7
+
+-------------------------------------------------------------------
Tue May 14 09:16:22 CEST 2019 - schubi(a)suse.de
- List of Online Repositories: Do not show already added repos.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.2.6/package/yast2-packager.spec new/yast2-packager-4.2.7/package/yast2-packager.spec
--- old/yast2-packager-4.2.6/package/yast2-packager.spec 2019-05-14 16:57:19.000000000 +0200
+++ new/yast2-packager-4.2.7/package/yast2-packager.spec 2019-05-22 09:15:05.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2-packager
-Version: 4.2.6
+Version: 4.2.7
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.2.6/src/lib/y2packager/clients/inst_productsources.rb new/yast2-packager-4.2.7/src/lib/y2packager/clients/inst_productsources.rb
--- old/yast2-packager-4.2.6/src/lib/y2packager/clients/inst_productsources.rb 2019-05-14 16:57:19.000000000 +0200
+++ new/yast2-packager-4.2.7/src/lib/y2packager/clients/inst_productsources.rb 2019-05-22 09:15:05.000000000 +0200
@@ -1394,15 +1394,20 @@
Builtins.y2milestone("Using alias: %1", alias_name)
+ # With "check_alias"=false the added repo will not be checked
+ # if it already there but the old values will be overwriten.
+ # This is useful in the installation stage e.g. with the Live-CD
+ # where repos are already added in the running system.
src_id = Pkg.RepositoryAdd(
- "enabled" => false,
- "name" => repo_name,
- "base_urls" => [url],
- "prod_dir" => pth,
+ "enabled" => false,
+ "name" => repo_name,
+ "base_urls" => [url],
+ "prod_dir" => pth,
# alias needs to be unique
# bugzilla #309317
- "alias" => alias_name,
- "type" => repo_type
+ "alias" => alias_name,
+ "type" => repo_type,
+ "check_alias" => !Stage.initial
)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.2.6/test/lib/clients/inst_productsources_test.rb new/yast2-packager-4.2.7/test/lib/clients/inst_productsources_test.rb
--- old/yast2-packager-4.2.6/test/lib/clients/inst_productsources_test.rb 2019-05-14 16:57:19.000000000 +0200
+++ new/yast2-packager-4.2.7/test/lib/clients/inst_productsources_test.rb 2019-05-22 09:15:05.000000000 +0200
@@ -96,7 +96,7 @@
it "uses passed alias" do
expect(Yast::Pkg).to receive(:RepositoryAdd)
.with("enabled" => false, "name" => "main", "base_urls" => ["http://yast.rulezz.com"],
- "prod_dir" => "/", "alias" => "alias1", "type" => "RPM-MD")
+ "prod_dir" => "/", "alias" => "alias1", "type" => "RPM-MD", "check_alias" => true)
.and_return(1)
client.CreateSource("http://yast.rulezz.com", "/", "main", "alias1")
@@ -105,7 +105,8 @@
it "uses fallback alias when passed alias" do
expect(Yast::Pkg).to receive(:RepositoryAdd)
.with("enabled" => false, "name" => "main", "base_urls" => ["http://yast.rulezz.com"],
- "prod_dir" => "/prod1", "alias" => "yast.rulezz.com", "type" => "RPM-MD")
+ "prod_dir" => "/prod1", "alias" => "yast.rulezz.com",
+ "type" => "RPM-MD", "check_alias" => true)
.and_return(1)
client.CreateSource("http://yast.rulezz.com", "/prod1", "main", nil)
1
0
Hello community,
here is the log from the commit of package yast2-python-bindings for openSUSE:Factory checked in at 2019-05-22 15:37:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-python-bindings (Old)
and /work/SRC/openSUSE:Factory/.yast2-python-bindings.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-python-bindings"
Wed May 22 15:37:45 2019 rev:43 rq:704530 version:4.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-python-bindings/yast2-python-bindings.changes 2019-02-28 21:47:58.445407986 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-python-bindings.new.5148/yast2-python-bindings.changes 2019-05-22 15:37:48.066602881 +0200
@@ -1,0 +2,7 @@
+Tue May 21 15:58:45 UTC 2019 - dmulder(a)suse.com
+
+- yast2-python-bindings compilation errors when compiling with
+ -Werror=format-security; (bsc#1133596);
+- 4.1.1
+
+-------------------------------------------------------------------
Old:
----
yast2-python-bindings-4.1.0.tar.bz2
New:
----
yast2-python-bindings-4.1.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-python-bindings.spec ++++++
--- /var/tmp/diff_new_pack.oTjY8l/_old 2019-05-22 15:37:48.582602732 +0200
+++ /var/tmp/diff_new_pack.oTjY8l/_new 2019-05-22 15:37:48.586602731 +0200
@@ -23,7 +23,7 @@
%endif
Name: yast2-python-bindings
-Version: 4.1.0
+Version: 4.1.1
Release: 0
Summary: Python bindings for the YaST platform
License: GPL-2.0-only
++++++ yast2-python-bindings-4.1.0.tar.bz2 -> yast2-python-bindings-4.1.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-python-bindings-4.1.0/Dockerfile new/yast2-python-bindings-4.1.1/Dockerfile
--- old/yast2-python-bindings-4.1.0/Dockerfile 2019-02-27 15:44:22.000000000 +0100
+++ new/yast2-python-bindings-4.1.1/Dockerfile 2019-05-21 18:33:08.000000000 +0200
@@ -1,4 +1,4 @@
-FROM yastdevel/cpp
+FROM registry.opensuse.org/yast/head/containers/yast-cpp:latest
RUN zypper --gpg-auto-import-keys --non-interactive in --no-recommends \
python-devel python3-devel swig autoconf-archive
COPY . /usr/src/app
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-python-bindings-4.1.0/README.md new/yast2-python-bindings-4.1.1/README.md
--- old/yast2-python-bindings-4.1.0/README.md 2019-02-27 15:44:22.000000000 +0100
+++ new/yast2-python-bindings-4.1.1/README.md 2019-05-21 18:33:08.000000000 +0200
@@ -1,5 +1,186 @@
# YaST - The Python Bindings #
[![Travis Build](https://travis-ci.org/yast/yast-python-bindings.svg?branch=master)](…
-[![Jenkins Build](http://img.shields.io/jenkins/s/https/ci.opensuse.org/yast-python-bi…
+[![Jenkins Build](http://img.shields.io/jenkins/s/https/ci.opensuse.org/yast-yast-pyth…
+
+The API documentation for the UI can be found [here][api]. For more details,
+check the [YaST documentation][doc].
+
+[api]: http://yast-ui-bindings.surge.sh
+[doc]: http://yast.opensuse.org/documentation
+
+## Python versions
+The yast python bindings will build in both python2 and python3. Suppying the
+--enable-python3 option during configure will switch to python3 bindings.
+
+## Calling YaST from Python
+
+### Publish, Import and Include
+
+The connection to the [YaST component system][arch] has two parts.
+The first one is the ability
+to be called from the component system. *Clients* can be called via WFM
+and *modules* provide an interface via the `Declare` decorator, where the type
+signature is specified.
+
+[arch]: https://yastgithubio.readthedocs.org/en/latest/architecture/
+
+The second part is calling methods from the component system. *Clients* are called
+via WFM. Methods from *modules* are imported with {yast.import_module}, which
+loads a component and creates a python object in the Yast namespace from it, on which
+exported methods can be called.
+
+#### A simple yast python module (example)
+Modules must be installed in one of the YaST2 modules directories:
+/y2update/modules; $HOME/.yast2/modules; /usr/share/YaST2/modules
+
+```python
+# ~/.yast2/modules/pytest.py
+from yast import Declare
+@Declare('integer', 'integer', 'integer')
+def suma(a, b):
+ return a + b
+```
+
+#### Calling this module from python
+
+```python
+import yast
+yast.import_module('pytest')
+print(yast.pytest.suma(2, 3))
+```
+
+#### Calling this module from ruby
+
+```ruby
+require "yast"
+Yast.import "pytest"
+puts Yast::pytest.suma(2, 3)
+```
+
+#### Calling this module from perl
+
+```perl
+use YaPI;
+YaST::YCP::Import("pytest");
+pytest.suma(2, 3);
+```
+
+### How to call UI from YaST in Python
+
+```python
+# test.py
+import yast
+yast.import_module('Popup')
+yast.Popup.Message('Example text')
+```
+
+You must execute UI code using y2base, for example:
+
+```bash
+/usr/lib/YaST2/bin/y2base ./test.py ncurses
+```
+
+
+### How to call SCR from python
+There are 4 functions for working with SCR SCR.Dir, SCR.Read, SCR.Write
+and SCR.Execute. The first argument of a function is a ycp path as string.
+e.g. ".target.bash_output"
+
+```python
+>>> import yast
+>>> yast.SCR.Execute(yast.Path('.target.bash_output'),'pwd')
+{'exit': 0, 'stderr': '', 'stdout': '/home/user\n'}
+```
+
+
+### Symbol, Path and Term in python
+After importing yast python has 3 classes for building yast type such as
+symbol, path or term.
+
+```python
+path = Path('.my.path')
+symbol = Symbol('Enabled')
+term = Term('VBox',Term('Label','&Example Label'), Term('PushButton', '&So What'))
+```
+
+### UI Shortcuts
+Yast python provides shortcuts for UI terms, which is useful for constructing dialogs.
+
+```python
+# usage with Term
+content = yast.Term(
+ yast.Symbol('ButtonBox'),
+ yast.Term(
+ yast.Symbol('PushButton'),
+ yast.Term(yast.Symbol('id'), yast.Symbol('ok_button')),
+ "OK"
+ ),
+ yast.Term(
+ yast.Symbol('PushButton'),
+ yast.Term(yast.Symbol('id'), yast.Symbol('cancel_button')),
+ "Cancel"
+ )
+)
+
+# usage with shortcuts
+content = ButtonBox(
+ PushButton(Id('ok_button'), "OK"),
+ PushButton(Id('cancel_button'), "Cancel")
+)
+```
+
+### Internationalization & Localization
+YaST python provides internationalization and localization using python's
+gettext library. Some helper functions are available via the python yast
+library.
+To bind to a text domain:
+```python
+from yast import textdomain
+textdomain('proj_name')
+```
+The textdomain function is a helper function which calls gettext.bindtextdomain
+and binds to /usr/share/YaST2/locale.
+You can also import the gettext function, or it's alias \_(), via the yast
+module to translate text.
+```python
+from yast import _
+_('Message to be translated.')
+```
+The \_() alias to gettext cannot be imported using `from yast import *`,
+because python automatically hides functions starting with an underscore. It
+must be imported explicitly.
+
+Translations for the text wrapped with gettext should be added to the
+yast2-trans package.
+
+### Further Information
+
+More information about YaST can be found on its [homepage](http://yast.opensuse.org).
+
+## Packager information
+
+### Build dependencies
+
+Build dependencies include autotools, a c++ compiler, python devel files, swig,
+and yast2 build dependencies. For a more detailed list, see the included
+spec file.
+
+### How to Compile
+
+Use the latest yast2-devtools, then use these calls:
+
+```bash
+make -f Makefile.cvs all
+./configure --enable-python3
+make
+```
+
+### How to Install
+
+Compile it, and from the `build` directory call as root:
+
+```bash
+make install
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-python-bindings-4.1.0/package/yast2-python-bindings.changes new/yast2-python-bindings-4.1.1/package/yast2-python-bindings.changes
--- old/yast2-python-bindings-4.1.0/package/yast2-python-bindings.changes 2019-02-27 15:44:22.000000000 +0100
+++ new/yast2-python-bindings-4.1.1/package/yast2-python-bindings.changes 2019-05-21 18:33:08.000000000 +0200
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Tue May 21 15:58:45 UTC 2019 - dmulder(a)suse.com
+
+- yast2-python-bindings compilation errors when compiling with
+ -Werror=format-security; (bsc#1133596);
+- 4.1.1
+
+-------------------------------------------------------------------
Tue Feb 26 12:45:28 UTC 2019 - José Iván López González <jlopez(a)suse.com>
- Version bump (bsc#1124009)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-python-bindings-4.1.0/package/yast2-python-bindings.spec new/yast2-python-bindings-4.1.1/package/yast2-python-bindings.spec
--- old/yast2-python-bindings-4.1.0/package/yast2-python-bindings.spec 2019-02-27 15:44:22.000000000 +0100
+++ new/yast2-python-bindings-4.1.1/package/yast2-python-bindings.spec 2019-05-21 18:33:08.000000000 +0200
@@ -23,7 +23,7 @@
%endif
Name: yast2-python-bindings
-Version: 4.1.0
+Version: 4.1.1
Release: 0
Summary: Python bindings for the YaST platform
License: GPL-2.0-only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-python-bindings-4.1.0/src/y2log.i new/yast2-python-bindings-4.1.1/src/y2log.i
--- old/yast2-python-bindings-4.1.0/src/y2log.i 2019-02-27 15:44:22.000000000 +0100
+++ new/yast2-python-bindings-4.1.1/src/y2log.i 2019-05-21 18:33:08.000000000 +0200
@@ -3,32 +3,32 @@
void swig_y2debug(const char *file, const int line, const char *func, const char *msg)
{
- y2_logger(LOG_DEBUG, "Python", file, line, func, msg);
+ y2_logger(LOG_DEBUG, "Python", file, line, func, "%s", msg);
}
void swig_y2milestone(const char *file, const int line, const char *func, const char *msg)
{
- y2_logger(LOG_MILESTONE, "Python", file, line, func, msg);
+ y2_logger(LOG_MILESTONE, "Python", file, line, func, "%s", msg);
}
void swig_y2warning(const char *file, const int line, const char *func, const char *msg)
{
- y2_logger(LOG_WARNING, "Python", file, line, func, msg);
+ y2_logger(LOG_WARNING, "Python", file, line, func, "%s", msg);
}
void swig_y2error(const char *file, const int line, const char *func, const char *msg)
{
- y2_logger(LOG_ERROR, "Python", file, line, func, msg);
+ y2_logger(LOG_ERROR, "Python", file, line, func, "%s", msg);
}
void swig_y2security(const char *file, const int line, const char *func, const char *msg)
{
- y2_logger(LOG_SECURITY, "Python", file, line, func, msg);
+ y2_logger(LOG_SECURITY, "Python", file, line, func, "%s", msg);
}
void swig_y2internal(const char *file, const int line, const char *func, const char *msg)
{
- y2_logger(LOG_INTERNAL, "Python", file, line, func, msg);
+ y2_logger(LOG_INTERNAL, "Python", file, line, func, "%s", msg);
}
%}
1
0
Hello community,
here is the log from the commit of package yast2-schema for openSUSE:Factory checked in at 2019-05-22 15:37:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-schema (Old)
and /work/SRC/openSUSE:Factory/.yast2-schema.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-schema"
Wed May 22 15:37:39 2019 rev:48 rq:704503 version:4.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-schema/yast2-schema.changes 2019-05-10 09:12:10.035440813 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-schema.new.5148/yast2-schema.changes 2019-05-22 15:37:40.490605068 +0200
@@ -1,0 +2,7 @@
+Tue May 21 16:11:42 CEST 2019 - schubi(a)suse.de
+
+- Updated build requ. due tag cpu_mitigations in bootloader.
+ (bsc#1128707) (wrong version number)
+- 4.2.0
+
+-------------------------------------------------------------------
Old:
----
yast2-schema-4.1.7.tar.bz2
New:
----
yast2-schema-4.2.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-schema.spec ++++++
--- /var/tmp/diff_new_pack.bD1TTX/_old 2019-05-22 15:37:41.074604900 +0200
+++ /var/tmp/diff_new_pack.bD1TTX/_new 2019-05-22 15:37:41.078604898 +0200
@@ -17,7 +17,7 @@
Name: yast2-schema
-Version: 4.1.7
+Version: 4.2.0
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -45,7 +45,7 @@
BuildRequires: yast2-auth-client
BuildRequires: yast2-auth-server
# tag cpu_mitigations
-BuildRequires: yast2-bootloader >= 4.1.24
+BuildRequires: yast2-bootloader >= 4.2.1
BuildRequires: yast2-configuration-management >= 4.1.2
BuildRequires: yast2-country
BuildRequires: yast2-dhcp-server
++++++ yast2-schema-4.1.7.tar.bz2 -> yast2-schema-4.2.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-schema-4.1.7/package/yast2-schema.changes new/yast2-schema-4.2.0/package/yast2-schema.changes
--- old/yast2-schema-4.1.7/package/yast2-schema.changes 2019-05-07 11:02:28.000000000 +0200
+++ new/yast2-schema-4.2.0/package/yast2-schema.changes 2019-05-21 16:23:21.000000000 +0200
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Tue May 21 16:11:42 CEST 2019 - schubi(a)suse.de
+
+- Updated build requ. due tag cpu_mitigations in bootloader.
+ (bsc#1128707) (wrong version number)
+- 4.2.0
+
+-------------------------------------------------------------------
Tue May 7 09:17:36 CEST 2019 - schubi(a)suse.de
- Updated build requ. due tag cpu_mitigations in bootloader.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-schema-4.1.7/package/yast2-schema.spec new/yast2-schema-4.2.0/package/yast2-schema.spec
--- old/yast2-schema-4.1.7/package/yast2-schema.spec 2019-05-07 11:02:28.000000000 +0200
+++ new/yast2-schema-4.2.0/package/yast2-schema.spec 2019-05-21 16:23:21.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2-schema
-Version: 4.1.7
+Version: 4.2.0
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -46,7 +46,7 @@
BuildRequires: yast2-auth-client
BuildRequires: yast2-auth-server
# tag cpu_mitigations
-BuildRequires: yast2-bootloader >= 4.1.24
+BuildRequires: yast2-bootloader >= 4.2.1
BuildRequires: yast2-country
BuildRequires: yast2-configuration-management >= 4.1.2
BuildRequires: yast2-dhcp-server
1
0
Hello community,
here is the log from the commit of package libstorage-ng for openSUSE:Factory checked in at 2019-05-22 15:37:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libstorage-ng (Old)
and /work/SRC/openSUSE:Factory/.libstorage-ng.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libstorage-ng"
Wed May 22 15:37:29 2019 rev:56 rq:704469 version:4.1.121
Changes:
--------
--- /work/SRC/openSUSE:Factory/libstorage-ng/libstorage-ng.changes 2019-05-10 09:13:25.695656821 +0200
+++ /work/SRC/openSUSE:Factory/.libstorage-ng.new.5148/libstorage-ng.changes 2019-05-22 15:37:30.978607815 +0200
@@ -1,0 +2,13 @@
+Tue May 21 13:32:06 UTC 2019 - jlopez(a)suse.com
+
+- merge gh#openSUSE/libstorage-ng#646
+- Initial changes
+- Rename auxiliary struct
+- Block shrink multi-device Btrfs
+- Adapt action text when growing multi-device Btrfs
+- Add integration test
+- Bump lib version
+- Resize multi-device Btrfs
+- 4.1.121
+
+--------------------------------------------------------------------
Old:
----
libstorage-ng-4.1.120.tar.xz
New:
----
libstorage-ng-4.1.121.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libstorage-ng.spec ++++++
--- /var/tmp/diff_new_pack.NFXorW/_old 2019-05-22 15:37:31.666607616 +0200
+++ /var/tmp/diff_new_pack.NFXorW/_new 2019-05-22 15:37:31.666607616 +0200
@@ -18,7 +18,7 @@
%define libname %{name}1
Name: libstorage-ng
-Version: 4.1.120
+Version: 4.1.121
Release: 0
Summary: Library for storage management
License: GPL-2.0-only
++++++ libstorage-ng-4.1.120.tar.xz -> libstorage-ng-4.1.121.tar.xz ++++++
++++ 2337 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package nim for openSUSE:Factory checked in at 2019-05-22 12:20:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nim (Old)
and /work/SRC/openSUSE:Factory/.nim.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nim"
Wed May 22 12:20:13 2019 rev:10 rq:704672 version:0.19.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/nim/nim.changes 2019-01-08 12:29:55.744177223 +0100
+++ /work/SRC/openSUSE:Factory/.nim.new.5148/nim.changes 2019-05-22 12:20:14.476841828 +0200
@@ -1,0 +2,7 @@
+Tue May 14 12:55:36 UTC 2019 - m.szczepaniak.000(a)gmail.com
+
+- Update to version 0.19.6:
+ Please see:
+ https://nim-lang.org/blog/2019/05/13/version-0196-released.html
+
+-------------------------------------------------------------------
Old:
----
nim-0.19.2.tar.xz
New:
----
nim-0.19.6.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nim.spec ++++++
--- /var/tmp/diff_new_pack.8hTN73/_old 2019-05-22 12:20:15.692841035 +0200
+++ /var/tmp/diff_new_pack.8hTN73/_new 2019-05-22 12:20:15.696841031 +0200
@@ -12,12 +12,12 @@
# 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/
#
Name: nim
-Version: 0.19.2
+Version: 0.19.6
Release: 0
Summary: A statically typed, imperative programming language
License: MIT
++++++ nim-0.19.2.tar.xz -> nim-0.19.6.tar.xz ++++++
/work/SRC/openSUSE:Factory/nim/nim-0.19.2.tar.xz /work/SRC/openSUSE:Factory/.nim.new.5148/nim-0.19.6.tar.xz differ: char 26, line 1
1
0
Hello community,
here is the log from the commit of package backintime for openSUSE:Factory checked in at 2019-05-22 12:20:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/backintime (Old)
and /work/SRC/openSUSE:Factory/.backintime.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "backintime"
Wed May 22 12:20:09 2019 rev:20 rq:704669 version:1.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/backintime/backintime.changes 2019-05-14 13:41:03.984347605 +0200
+++ /work/SRC/openSUSE:Factory/.backintime.new.5148/backintime.changes 2019-05-22 12:20:11.236843943 +0200
@@ -1,0 +2,5 @@
+Mon May 13 13:48:06 UTC 2019 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Avoid name repetition in summary.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ backintime.spec ++++++
--- /var/tmp/diff_new_pack.01R8Xp/_old 2019-05-22 12:20:11.796843578 +0200
+++ /var/tmp/diff_new_pack.01R8Xp/_new 2019-05-22 12:20:11.800843575 +0200
@@ -19,7 +19,7 @@
Name: backintime
Version: 1.2.0
Release: 0
-Summary: Back In Time is a simple backup tool for Linux, inspired by "flyback project"
+Summary: Backup tool for Linux inspired by the "flyback project"
License: GPL-2.0-or-later
Group: Productivity/Archiving/Backup
Url: https://github.com/bit-team/backintime
@@ -49,7 +49,7 @@
BuildArch: noarch
%description
-Back In Time is a simple backup tool for Linux, inspired by "flyback project".
+Back In Time is a backup tool for Linux inspired by the "flyback project".
It provides a command line client 'backintime' and a Qt5 GUI 'backintime-qt'
both written in Python3.
1
0
Hello community,
here is the log from the commit of package brightnessctl for openSUSE:Factory checked in at 2019-05-22 12:20:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/brightnessctl (Old)
and /work/SRC/openSUSE:Factory/.brightnessctl.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "brightnessctl"
Wed May 22 12:20:02 2019 rev:2 rq:704654 version:0.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/brightnessctl/brightnessctl.changes 2019-05-13 14:48:52.894538060 +0200
+++ /work/SRC/openSUSE:Factory/.brightnessctl.new.5148/brightnessctl.changes 2019-05-22 12:20:07.840846161 +0200
@@ -1,0 +2,13 @@
+Wed May 1 13:17:04 UTC 2019 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Use noun phrase in summary.
+- Remove redundant DESTDIR= from %make_install.
+- Require systemd-rpm-macros for %_udevrulesdir.
+
+-------------------------------------------------------------------
+Tue Apr 30 09:57:54 UTC 2019 - mvetter(a)suse.com
+
+- Clean spec
+- Add SUSE copyright
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ brightnessctl.spec ++++++
--- /var/tmp/diff_new_pack.7kVb2g/_old 2019-05-22 12:20:08.792845540 +0200
+++ /var/tmp/diff_new_pack.7kVb2g/_new 2019-05-22 12:20:08.792845540 +0200
@@ -1,6 +1,7 @@
#
# spec file for package brightnessctl
#
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2019 R Tyler Croy <rtyler(a)brokenco.de>
# Copyright (c) 2016 Fabio Alessandro Locati <fale(a)fedoraproject.org>
#
@@ -19,17 +20,18 @@
Name: brightnessctl
Version: 0.4
-Release: 0%{?dist}
-Summary: Read and control device brightness
+Release: 0
+Summary: Tool to read and control device brightness
License: MIT
Group: System/Management
URL: https://github.com/Hummer12007/%{name}
Source: https://github.com/Hummer12007/brightnessctl/archive/%{version}.tar.gz
BuildRequires: gcc
BuildRequires: make
+BuildRequires: systemd-rpm-macros
%description
-Utility to read and control the display brightness.
+A utility to read and control the display brightness.
%prep
%autosetup
@@ -40,7 +42,7 @@
%make_build
%install
-%make_install DESTDIR=%{buildroot} UDEVDIR=%{_udevrulesdir}
+%make_install UDEVDIR=%{_udevrulesdir}
%files
%doc README.md
1
0
Hello community,
here is the log from the commit of package ncdu for openSUSE:Factory checked in at 2019-05-22 12:19:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ncdu (Old)
and /work/SRC/openSUSE:Factory/.ncdu.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ncdu"
Wed May 22 12:19:56 2019 rev:11 rq:704645 version:1.14
Changes:
--------
--- /work/SRC/openSUSE:Factory/ncdu/ncdu.changes 2018-02-07 18:42:31.817044965 +0100
+++ /work/SRC/openSUSE:Factory/.ncdu.new.5148/ncdu.changes 2019-05-22 12:20:02.680849530 +0200
@@ -1,0 +2,13 @@
+Sat May 18 08:08:05 UTC 2019 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 1.14
+ * Add mtime display and sorting
+ * Add (limited) --follow-symlinks option
+ * Display larger file counts in browser UI
+ * Add -V, --version, and --help alias flags
+ * Fix crash when attempting to sort an empty directory
+ * Fix 100% CPU bug when ncdu loses the terminal
+ * Fix '--color=off' flag
+ * Fix some typos
+
+-------------------------------------------------------------------
Old:
----
ncdu-1.13.tar.gz
ncdu-1.13.tar.gz.asc
New:
----
ncdu-1.14.tar.gz
ncdu-1.14.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ncdu.spec ++++++
--- /var/tmp/diff_new_pack.eBvwc3/_old 2019-05-22 12:20:04.724848196 +0200
+++ /var/tmp/diff_new_pack.eBvwc3/_new 2019-05-22 12:20:04.744848182 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ncdu
#
-# Copyright (c) 2018 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,12 +12,12 @@
# 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/
#
Name: ncdu
-Version: 1.13
+Version: 1.14
Release: 0
Summary: NCurses Disk Usage
License: MIT
++++++ ncdu-1.13.tar.gz -> ncdu-1.14.tar.gz ++++++
++++ 2114 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/COPYING new/ncdu-1.14/COPYING
--- old/ncdu-1.13/COPYING 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/COPYING 2019-02-04 16:50:09.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright (c) 2007-2018 Yoran Heling
+Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/ChangeLog new/ncdu-1.14/ChangeLog
--- old/ncdu-1.13/ChangeLog 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/ChangeLog 2019-02-04 16:49:21.000000000 +0100
@@ -1,3 +1,13 @@
+1.14 - 2019-02-04
+ - Add mtime display and sorting (Alex Wilson)
+ - Add (limited) --follow-symlinks option (Simon Doppler)
+ - Display larger file counts in browser UI
+ - Add -V, --version, and --help alias flags
+ - Fix crash when attempting to sort an empty directory
+ - Fix 100% CPU bug when ncdu loses the terminal
+ - Fix '--color=off' flag
+ - Fix some typos
+
1.13 - 2018-01-29
- Add "extended information" mode and -e flag
- Add file mode, modification time and uid/gid to info window with -e
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/README new/ncdu-1.14/README
--- old/ncdu-1.13/README 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/README 2019-02-04 16:50:19.000000000 +0100
@@ -1,4 +1,4 @@
-ncdu 1.13
+ncdu 1.14
=========
DESCRIPTION
@@ -33,7 +33,7 @@
COPYING
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/compile new/ncdu-1.14/compile
--- old/ncdu-1.13/compile 2018-01-29 11:58:45.000000000 +0100
+++ new/ncdu-1.14/compile 2019-02-04 16:50:48.000000000 +0100
@@ -1,9 +1,9 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2016-01-11.22; # UTC
+scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey(a)cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@
# 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/>.
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -340,7 +340,7 @@
# Local Variables:
# mode: shell-script
# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/configure.ac new/ncdu-1.14/configure.ac
--- old/ncdu-1.13/configure.ac 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/configure.ac 2019-02-04 16:50:32.000000000 +0100
@@ -1,5 +1,5 @@
-AC_INIT(ncdu, 1.13, projects(a)yorhel.nl)
+AC_INIT(ncdu, 1.14, projects(a)yorhel.nl)
AC_CONFIG_SRCDIR([src/global.h])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE([foreign subdir-objects])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/doc/ncdu.pod new/ncdu-1.14/doc/ncdu.pod
--- old/ncdu-1.13/doc/ncdu.pod 2018-01-23 14:17:16.000000000 +0100
+++ new/ncdu-1.14/doc/ncdu.pod 2019-01-24 08:55:04.000000000 +0100
@@ -20,11 +20,11 @@
=over
-=item -h
+=item -h, --help
Print a short help message and quit.
-=item -v
+=item -v, -V, --version
Print ncdu version and quit.
@@ -67,6 +67,9 @@
effect when importing a file that has been exported without the extended
information.
+This enables viewing and sorting by the latest child mtime, or modified time,
+using 'm' and 'M', respectively.
+
=back
=head2 Interface options
@@ -169,6 +172,13 @@
usage statistics.
See http://www.brynosaurus.com/cachedir/
+=item -L, --follow-symlinks
+
+Follow symlinks and count the size of the file they point to. As of ncdu 1.14,
+this option will not follow symlinks to directories and will count each
+symlinked file as a unique file (i.e. unlike how hard links are handled). This
+is subject to change in later versions.
+
=back
@@ -208,6 +218,11 @@
Toggle between showing disk usage and showing apparent size.
+=item M
+
+Order by latest child mtime, or modified time. (press again for descending order)
+Requires the -e flag.
+
=item d
Delete the selected file or directory. An error message will be shown when the
@@ -228,6 +243,10 @@
Toggle display of child item counts.
+=item m
+
+Toggle display of latest child mtime, or modified time. Requires the -e flag.
+
=item e
Show/hide 'hidden' or 'excluded' files and directories. Please note that even
@@ -263,6 +282,45 @@
=back
+
+=head1 FILE FLAGS
+
+Entries in the browser interface may be prefixed by a one-character flag. These
+flags have the following meaning:
+
+=over
+
+=item !
+
+An error occurred while reading this directory.
+
+=item .
+
+An error occurred while reading a subdirectory, so the indicated size may not be
+correct.
+
+=item <
+
+File or directory is excluded from the statistics by using exlude patterns.
+
+=item >
+
+Directory is on another filesystem.
+
+=item @
+
+This is neither a file nor a folder (symlink, socket, ...).
+
+=item H
+
+Same file was already counted (hard link).
+
+=item e
+
+Empty directory.
+
+=back
+
=head1 EXAMPLES
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/missing new/ncdu-1.14/missing
--- old/ncdu-1.13/missing 2018-01-29 11:58:45.000000000 +0100
+++ new/ncdu-1.14/missing 2019-02-04 16:50:48.000000000 +0100
@@ -1,9 +1,9 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2016-01-11.22; # UTC
+scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard(a)iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@
# 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/>.
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -101,9 +101,9 @@
exit $st
fi
-perl_URL=http://www.perl.org/
-flex_URL=http://flex.sourceforge.net/
-gnu_software_URL=http://www.gnu.org/software
+perl_URL=https://www.perl.org/
+flex_URL=https://github.com/westes/flex
+gnu_software_URL=https://www.gnu.org/software
program_details ()
{
@@ -207,7 +207,7 @@
exit $st
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/ncdu.1 new/ncdu-1.14/ncdu.1
--- old/ncdu-1.13/ncdu.1 2018-01-23 14:19:18.000000000 +0100
+++ new/ncdu-1.14/ncdu.1 2019-02-04 16:52:44.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32)
+.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "NCDU 1"
-.TH NCDU 1 "2018-01-23" "ncdu-1.12g" "ncdu manual"
+.TH NCDU 1 "2019-01-24" "ncdu-1.14" "ncdu manual"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -147,11 +147,11 @@
.IX Header "OPTIONS"
.SS "Mode Selection"
.IX Subsection "Mode Selection"
-.IP "\-h" 4
-.IX Item "-h"
+.IP "\-h, \-\-help" 4
+.IX Item "-h, --help"
Print a short help message and quit.
-.IP "\-v" 4
-.IX Item "-v"
+.IP "\-v, \-V, \-\-version" 4
+.IX Item "-v, -V, --version"
Print ncdu version and quit.
.IP "\-f \fI\s-1FILE\s0\fR" 4
.IX Item "-f FILE"
@@ -188,6 +188,9 @@
when importing (to read this extra information in memory). This flag has no
effect when importing a file that has been exported without the extended
information.
+.Sp
+This enables viewing and sorting by the latest child mtime, or modified time,
+using 'm' and 'M', respectively.
.SS "Interface options"
.IX Subsection "Interface options"
.IP "\-0" 4
@@ -264,10 +267,16 @@
by a newline.
.IP "\-\-exclude\-caches" 4
.IX Item "--exclude-caches"
-Exclude directories containing \s-1CACHEDIR.TAG. \s0 The directories will still be
+Exclude directories containing \s-1CACHEDIR.TAG.\s0 The directories will still be
displayed, but not their content, and they are not counted towards the disk
usage statistics.
See http://www.brynosaurus.com/cachedir/
+.IP "\-L, \-\-follow\-symlinks" 4
+.IX Item "-L, --follow-symlinks"
+Follow symlinks and count the size of the file they point to. As of ncdu 1.14,
+this option will not follow symlinks to directories and will count each
+symlinked file as a unique file (i.e. unlike how hard links are handled). This
+is subject to change in later versions.
.SH "KEYS"
.IX Header "KEYS"
.IP "?" 4
@@ -293,6 +302,10 @@
.IP "a" 4
.IX Item "a"
Toggle between showing disk usage and showing apparent size.
+.IP "M" 4
+.IX Item "M"
+Order by latest child mtime, or modified time. (press again for descending order)
+Requires the \-e flag.
.IP "d" 4
.IX Item "d"
Delete the selected file or directory. An error message will be shown when the
@@ -309,6 +322,9 @@
.IP "c" 4
.IX Item "c"
Toggle display of child item counts.
+.IP "m" 4
+.IX Item "m"
+Toggle display of latest child mtime, or modified time. Requires the \-e flag.
.IP "e" 4
.IX Item "e"
Show/hide 'hidden' or 'excluded' files and directories. Please note that even
@@ -339,6 +355,27 @@
.IP "q" 4
.IX Item "q"
Quit
+.SH "FILE FLAGS"
+.IX Header "FILE FLAGS"
+Entries in the browser interface may be prefixed by a one-character flag. These
+flags have the following meaning:
+.IP "!" 4
+An error occurred while reading this directory.
+.IP "." 4
+An error occurred while reading a subdirectory, so the indicated size may not be
+correct.
+.IP "<" 4
+File or directory is excluded from the statistics by using exlude patterns.
+.IP ">" 4
+Directory is on another filesystem.
+.IP "@" 4
+This is neither a file nor a folder (symlink, socket, ...).
+.IP "H" 4
+.IX Item "H"
+Same file was already counted (hard link).
+.IP "e" 4
+.IX Item "e"
+Empty directory.
.SH "EXAMPLES"
.IX Header "EXAMPLES"
To scan and browse the directory you're currently in, all you need is a simple:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/browser.c new/ncdu-1.14/src/browser.c
--- old/ncdu-1.13/src/browser.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/browser.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@
#include <time.h>
-static int graph = 1, show_as = 0, info_show = 0, info_page = 0, info_start = 0, show_items = 0;
+static int graph = 1, show_as = 0, info_show = 0, info_page = 0, info_start = 0, show_items = 0, show_mtime = 0;
static char *message = NULL;
@@ -169,19 +169,54 @@
static void browse_draw_items(struct dir *n, int *x) {
enum ui_coltype c = n->flags & FF_BSEL ? UIC_SEL : UIC_DEFAULT;
+ enum ui_coltype cn = c == UIC_SEL ? UIC_NUM_SEL : UIC_NUM;
if(!show_items)
return;
*x += 7;
- if(n->items > 99999) {
- addstrc(c, "> ");
- addstrc(c == UIC_SEL ? UIC_NUM_SEL : UIC_NUM, "100");
- addchc(c, 'k');
- } else if(n->items) {
- uic_set(c == UIC_SEL ? UIC_NUM_SEL : UIC_NUM);
+ if(!n->items)
+ return;
+ else if(n->items < 100*1000) {
+ uic_set(cn);
printw("%6s", fullsize(n->items));
+ } else if(n->items < 1000*1000) {
+ uic_set(cn);
+ printw("%5.1f", n->items / 1000.0);
+ addstrc(c, "k");
+ } else if(n->items < 1000*1000*1000) {
+ uic_set(cn);
+ printw("%5.1f", n->items / 1e6);
+ addstrc(c, "M");
+ } else {
+ addstrc(c, " > ");
+ addstrc(cn, "1");
+ addchc(c, 'B');
+ }
+}
+
+
+static void browse_draw_mtime(struct dir *n, int *x) {
+ enum ui_coltype c = n->flags & FF_BSEL ? UIC_SEL : UIC_DEFAULT;
+ char mbuf[26];
+ struct dir_ext *e;
+ time_t t;
+
+ if (n->flags & FF_EXT) {
+ e = dir_ext_ptr(n);
+ } else if (!strcmp(n->name, "..") && (n->parent->flags & FF_EXT)) {
+ e = dir_ext_ptr(n->parent);
+ } else {
+ snprintf(mbuf, sizeof(mbuf), "no mtime");
+ goto no_mtime;
}
+ t = (time_t)e->mtime;
+
+ strftime(mbuf, sizeof(mbuf), "%Y-%m-%d %H:%M:%S %z", localtime(&t));
+ uic_set(c == UIC_SEL ? UIC_NUM_SEL : UIC_NUM);
+no_mtime:
+ printw("%26s", mbuf);
+ *x += 27;
}
@@ -207,6 +242,11 @@
browse_draw_items(n, &x);
move(row, x);
+ if (extended_info && show_mtime) {
+ browse_draw_mtime(n, &x);
+ move(row, x);
+ }
+
if(n->flags & FF_DIR)
c = c == UIC_SEL ? UIC_DIR_SEL : UIC_DIR;
addchc(c, n->flags & FF_DIR ? '/' : ' ');
@@ -398,6 +438,12 @@
dirlist_set_sort(DL_COL_ITEMS, dirlist_sort_col == DL_COL_ITEMS ? !dirlist_sort_desc : 1, DL_NOCHANGE);
info_show = 0;
break;
+ case 'M':
+ if (extended_info) {
+ dirlist_set_sort(DL_COL_MTIME, dirlist_sort_col == DL_COL_MTIME ? !dirlist_sort_desc : 1, DL_NOCHANGE);
+ info_show = 0;
+ }
+ break;
case 'e':
dirlist_set_hidden(!dirlist_hidden);
info_show = 0;
@@ -463,6 +509,10 @@
case 'c':
show_items = !show_items;
break;
+ case 'm':
+ if (extended_info)
+ show_mtime = !show_mtime;
+ break;
case 'i':
info_show = !info_show;
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/browser.h new/ncdu-1.14/src/browser.h
--- old/ncdu-1.13/src/browser.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/browser.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/delete.c new/ncdu-1.14/src/delete.c
--- old/ncdu-1.13/src/delete.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/delete.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -195,7 +195,7 @@
r = unlink(dr->name);
delete_nxt:
- /* error occured, ask user what to do */
+ /* error occurred, ask user what to do */
if(r == -1 && !ignoreerr) {
state = DS_FAILED;
lasterrno = errno;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/delete.h new/ncdu-1.14/src/delete.h
--- old/ncdu-1.13/src/delete.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/delete.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/dir.h new/ncdu-1.14/src/dir.h
--- old/ncdu-1.13/src/dir.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/dir.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -123,7 +123,7 @@
void dir_curpath_enter(const char *);
void dir_curpath_leave();
-/* Sets the path where the last error occured, or reset on NULL. */
+/* Sets the path where the last error occurred, or reset on NULL. */
void dir_setlasterr(const char *);
/* Error message on fatal error, or NULL if there hasn't been a fatal error yet. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/dir_common.c new/ncdu-1.14/src/dir_common.c
--- old/ncdu-1.13/src/dir_common.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/dir_common.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -36,7 +36,7 @@
char *dir_fatalerr; /* Error message on a fatal error. (NULL if there was no fatal error) */
int dir_ui; /* User interface to use */
static int confirm_quit_while_scanning_stage_1_passed; /* Additional check before quitting */
-static char *lasterr; /* Path where the last error occured. */
+static char *lasterr; /* Path where the last error occurred. */
static int curpathl; /* Allocated length of dir_curpath */
static int lasterrl; /* ^ of lasterr */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/dir_export.c new/ncdu-1.14/src/dir_export.c
--- old/ncdu-1.13/src/dir_export.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/dir_export.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/dir_import.c new/ncdu-1.14/src/dir_import.c
--- old/ncdu-1.13/src/dir_import.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/dir_import.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -81,7 +81,7 @@
/* Fills readbuf with data from the stream. *buf will have at least n (<
* READ_BUF_SIZE) bytes available, unless the stream reached EOF or an error
- * occured. If the file data contains a null-type, this is considered an error.
+ * occurred. If the file data contains a null-type, this is considered an error.
* Returns 0 on success, non-zero on error. */
static int fill(int n) {
int r;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/dir_mem.c new/ncdu-1.14/src/dir_mem.c
--- old/ncdu-1.13/src/dir_mem.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/dir_mem.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -67,10 +67,8 @@
/* found in the table? update hlnk */
if(!i) {
- t = d->hlnk = kh_key(links, k);
- if(t->hlnk != NULL)
- for(t=t->hlnk; t->hlnk!=d->hlnk; t=t->hlnk)
- ;
+ t = kh_key(links, k);
+ d->hlnk = t->hlnk == NULL ? t : t->hlnk;
t->hlnk = d;
}
@@ -146,10 +144,13 @@
* possible hard link, because hlnk_check() will take care of it in that
* case. */
if(item->flags & FF_HLNKC) {
- addparentstats(item->parent, 0, 0, 1);
+ addparentstats(item->parent, 0, 0, 0, 1);
hlink_check(item);
- } else
- addparentstats(item->parent, item->size, item->asize, 1);
+ } else if(item->flags & FF_EXT) {
+ addparentstats(item->parent, item->size, item->asize, dir_ext_ptr(item)->mtime, 1);
+ } else {
+ addparentstats(item->parent, item->size, item->asize, 0, 1);
+ }
/* propagate ERR and SERR back up to the root */
if(item->flags & FF_SERR || item->flags & FF_ERR)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/dir_scan.c new/ncdu-1.14/src/dir_scan.c
--- old/ncdu-1.13/src/dir_scan.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/dir_scan.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -84,7 +84,7 @@
/* Reads all filenames in the currently chdir'ed directory and stores it as a
* nul-separated list of filenames. The list ends with an empty filename (i.e.
* two nuls). . and .. are not included. Returned memory should be freed. *err
- * is set to 1 if some error occured. Returns NULL if that error was fatal.
+ * is set to 1 if some error occurred. Returns NULL if that error was fatal.
* The reason for reading everything in memory first and then walking through
* the list is to avoid eating too many file descriptors in a deeply recursive
* directory. */
@@ -185,7 +185,7 @@
* directory. Assumes we're chdir'ed in the directory in which this item
* resides. */
static int dir_scan_item(const char *name) {
- struct stat st;
+ static struct stat st, stl;
int fail = 0;
#ifdef __CYGWIN__
@@ -204,8 +204,12 @@
dir_setlasterr(dir_curpath);
}
- if(!(buf_dir->flags & (FF_ERR|FF_EXL)))
- stat_to_dir(&st);
+ if(!(buf_dir->flags & (FF_ERR|FF_EXL))) {
+ if(follow_symlinks && S_ISLNK(st.st_mode) && !stat(name, &stl) && !S_ISDIR(stl.st_mode))
+ stat_to_dir(&stl);
+ else
+ stat_to_dir(&st);
+ }
if(cachedir_tags && (buf_dir->flags & FF_DIR) && !(buf_dir->flags & (FF_ERR|FF_EXL|FF_OTHFS)))
if(has_cachedir_tag(buf_dir->name)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/dirlist.c new/ncdu-1.14/src/dirlist.c
--- old/ncdu-1.13/src/dirlist.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/dirlist.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -50,6 +50,14 @@
))
+static inline int cmp_mtime(struct dir *x, struct dir*y) {
+ int64_t x_mtime = 0, y_mtime = 0;
+ if (x->flags & FF_EXT)
+ x_mtime = dir_ext_ptr(x)->mtime;
+ if (y->flags & FF_EXT)
+ y_mtime = dir_ext_ptr(y)->mtime;
+ return (x_mtime > y_mtime ? 1 : (x_mtime == y_mtime ? 0 : -1));
+}
static int dirlist_cmp(struct dir *x, struct dir *y) {
int r;
@@ -80,7 +88,8 @@
r = dirlist_sort_col == DL_COL_NAME ? CMP_NAME :
dirlist_sort_col == DL_COL_SIZE ? CMP_SIZE :
dirlist_sort_col == DL_COL_ASIZE ? CMP_ASIZE :
- CMP_ITEMS;
+ dirlist_sort_col == DL_COL_ITEMS ? CMP_ITEMS :
+ cmp_mtime(x, y);
/* try 2 */
if(!r)
r = dirlist_sort_col == DL_COL_SIZE ? CMP_ASIZE : CMP_SIZE;
@@ -306,7 +315,7 @@
* 1 = selected has moved down
* -1 = selected has moved up
* -2 = selected = first item in the list (faster version of '1')
- * -3 = top should be considered as invalid (after sorting or opening an other dir)
+ * -3 = top should be considered as invalid (after sorting or opening another dir)
* -4 = an item has been deleted
* -5 = hidden flag has been changed
*
@@ -371,7 +380,8 @@
dirlist_sort_df = df;
/* sort the list (excluding the parent, which is always on top) */
- head_real = dirlist_sort(head_real);
+ if(head_real)
+ head_real = dirlist_sort(head_real);
if(dirlist_parent)
dirlist_parent->next = head_real;
else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/dirlist.h new/ncdu-1.14/src/dirlist.h
--- old/ncdu-1.13/src/dirlist.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/dirlist.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -37,6 +37,7 @@
#define DL_COL_SIZE 1
#define DL_COL_ASIZE 2
#define DL_COL_ITEMS 3
+#define DL_COL_MTIME 4
void dirlist_open(struct dir *);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/exclude.c new/ncdu-1.14/src/exclude.c
--- old/ncdu-1.13/src/exclude.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/exclude.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/exclude.h new/ncdu-1.14/src/exclude.h
--- old/ncdu-1.13/src/exclude.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/exclude.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/global.h new/ncdu-1.14/src/global.h
--- old/ncdu-1.13/src/global.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/global.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -45,7 +45,7 @@
#define FF_DIR 0x01
#define FF_FILE 0x02
#define FF_ERR 0x04 /* error while reading this item */
-#define FF_OTHFS 0x08 /* excluded because it was an other filesystem */
+#define FF_OTHFS 0x08 /* excluded because it was another filesystem */
#define FF_EXL 0x10 /* excluded using exlude patterns */
#define FF_SERR 0x20 /* error in subdirectory */
#define FF_HLNKC 0x40 /* hard link candidate (file with st_nlink > 1) */
@@ -103,6 +103,8 @@
extern int confirm_quit;
/* flag whether we want to enable use of struct dir_ext */
extern int extended_info;
+/* flag whether we want to follow symlinks */
+extern int follow_symlinks;
/* handle input from keyboard and update display */
int input_handle(int);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/help.c new/ncdu-1.14/src/help.c
--- old/ncdu-1.13/src/help.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/help.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@
int page, start;
-#define KEYS 17
+#define KEYS 19
char *keys[KEYS*2] = {
/*|----key----| |----------------description----------------|*/
"up, k", "Move cursor up",
@@ -42,11 +42,13 @@
"n", "Sort by name (ascending/descending)",
"s", "Sort by size (ascending/descending)",
"C", "Sort by items (ascending/descending)",
+ "M", "Sort by mtime (-e flag)",
"d", "Delete selected file or directory",
"t", "Toggle dirs before files when sorting",
"g", "Show percentage and/or graph",
"a", "Toggle between apparent size and disk usage",
"c", "Toggle display of child item counts",
+ "m", "Toggle display of latest mtime (-e flag)",
"e", "Show/hide hidden or excluded files",
"i", "Show information about selected item",
"r", "Recalculate the current directory",
@@ -97,10 +99,10 @@
ncaddch(10, 4, 'H');
ncaddch(11, 4, 'e');
uic_set(UIC_DEFAULT);
- ncaddstr( 5, 7, "An error occured while reading this directory");
- ncaddstr( 6, 7, "An error occured while reading a subdirectory");
+ ncaddstr( 5, 7, "An error occurred while reading this directory");
+ ncaddstr( 6, 7, "An error occurred while reading a subdirectory");
ncaddstr( 7, 7, "File or directory is excluded from the statistics");
- ncaddstr( 8, 7, "Directory was on an other filesystem");
+ ncaddstr( 8, 7, "Directory was on another filesystem");
ncaddstr( 9, 7, "This is not a file nor a dir (symlink, socket, ...)");
ncaddstr(10, 7, "Same file was already counted (hard link)");
ncaddstr(11, 7, "Empty directory");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/help.h new/ncdu-1.14/src/help.h
--- old/ncdu-1.13/src/help.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/help.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/main.c new/ncdu-1.14/src/main.c
--- old/ncdu-1.13/src/main.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/main.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -41,6 +41,7 @@
long update_delay = 100;
int cachedir_tags = 0;
int extended_info = 0;
+int follow_symlinks = 0;
static int min_rows = 17, min_cols = 60;
static int ncurses_init = 0;
@@ -103,6 +104,8 @@
}
screen_draw();
}
+ if(errno == EPIPE || errno == EBADF)
+ return 1;
return 0;
}
@@ -117,9 +120,9 @@
char *dir = NULL;
static yopt_opt_t opts[] = {
- { 'h', 0, "-h,-?" },
+ { 'h', 0, "-h,-?,--help" },
{ 'q', 0, "-q" },
- { 'v', 0, "-v" },
+ { 'v', 0, "-v,-V,--version" },
{ 'x', 0, "-x" },
{ 'e', 0, "-e" },
{ 'r', 0, "-r" },
@@ -130,6 +133,7 @@
{ '2', 0, "-2" },
{ 1, 1, "--exclude" },
{ 'X', 1, "-X,--exclude-from" },
+ { 'L', 0, "-L,--follow-symlinks" },
{ 'C', 0, "--exclude-caches" },
{ 's', 0, "--si" },
{ 'Q', 0, "--confirm-quit" },
@@ -146,9 +150,9 @@
case 0 : dir = val; break;
case 'h':
printf("ncdu <options> <directory>\n\n");
- printf(" -h This help message\n");
+ printf(" -h,--help This help message\n");
printf(" -q Quiet mode, refresh interval 2 seconds\n");
- printf(" -v Print version\n");
+ printf(" -v,-V,--version Print version\n");
printf(" -x Same filesystem\n");
printf(" -e Enable extended information\n");
printf(" -r Read only\n");
@@ -158,6 +162,7 @@
printf(" --si Use base 10 (SI) prefixes instead of base 2\n");
printf(" --exclude PATTERN Exclude files that match PATTERN\n");
printf(" -X, --exclude-from FILE Exclude files that match any pattern in FILE\n");
+ printf(" -L, --follow-symlinks Follow symbolic links (excluding directories)\n");
printf(" --exclude-caches Exclude directories containing CACHEDIR.TAG\n");
printf(" --confirm-quit Confirm quitting ncdu\n");
printf(" --color SCHEME Set color scheme\n");
@@ -183,12 +188,13 @@
exit(1);
}
break;
+ case 'L': follow_symlinks = 1; break;
case 'C':
cachedir_tags = 1;
break;
case 'c':
if(strcmp(val, "off") == 0) { uic_theme = 0; }
- if(strcmp(val, "dark") == 0) { uic_theme = 1; }
+ else if(strcmp(val, "dark") == 0) { uic_theme = 1; }
else {
fprintf(stderr, "Unknown --color option: %s\n", val);
exit(1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/path.c new/ncdu-1.14/src/path.c
--- old/ncdu-1.13/src/path.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/path.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/path.h new/ncdu-1.14/src/path.h
--- old/ncdu-1.13/src/path.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/path.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/quit.c new/ncdu-1.14/src/quit.c
--- old/ncdu-1.13/src/quit.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/quit.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2015-2018 Yoran Heling
+ Copyright (c) 2015-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/quit.h new/ncdu-1.14/src/quit.h
--- old/ncdu-1.13/src/quit.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/quit.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2015-2018 Yoran Heling
+ Copyright (c) 2015-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/shell.c new/ncdu-1.14/src/shell.c
--- old/ncdu-1.13/src/shell.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/shell.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Shell support: Copyright (c) 2014 Thomas Jarosch
Permission is hereby granted, free of charge, to any person obtaining
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/shell.h new/ncdu-1.14/src/shell.h
--- old/ncdu-1.13/src/shell.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/shell.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Shell support: Copyright (c) 2014 Thomas Jarosch
Permission is hereby granted, free of charge, to any person obtaining
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/util.c new/ncdu-1.14/src/util.c
--- old/ncdu-1.13/src/util.c 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/util.c 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -344,8 +344,11 @@
freedir_hlnk(dr);
/* update sizes of parent directories if this isn't a hard link.
- * If this is a hard link, freedir_hlnk() would have done so already */
- addparentstats(dr->parent, dr->flags & FF_HLNKC ? 0 : -dr->size, dr->flags & FF_HLNKC ? 0 : -dr->asize, -(dr->items+1));
+ * If this is a hard link, freedir_hlnk() would have done so already
+ *
+ * mtime is 0 here because recalculating the maximum at every parent
+ * dir is expensive, but might be good feature to add later if desired */
+ addparentstats(dr->parent, dr->flags & FF_HLNKC ? 0 : -dr->size, dr->flags & FF_HLNKC ? 0 : -dr->asize, 0, -(dr->items+1));
free(dr);
}
@@ -397,11 +400,16 @@
}
-void addparentstats(struct dir *d, int64_t size, int64_t asize, int items) {
+void addparentstats(struct dir *d, int64_t size, int64_t asize, uint64_t mtime, int items) {
+ struct dir_ext *e;
while(d) {
d->size = adds64(d->size, size);
d->asize = adds64(d->asize, asize);
d->items += items;
+ if (d->flags & FF_EXT) {
+ e = dir_ext_ptr(d);
+ e->mtime = (e->mtime > mtime) ? e->mtime : mtime;
+ }
d = d->parent;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ncdu-1.13/src/util.h new/ncdu-1.14/src/util.h
--- old/ncdu-1.13/src/util.h 2018-01-29 11:58:14.000000000 +0100
+++ new/ncdu-1.14/src/util.h 2019-02-04 16:49:57.000000000 +0100
@@ -1,6 +1,6 @@
/* ncdu - NCurses Disk Usage
- Copyright (c) 2007-2018 Yoran Heling
+ Copyright (c) 2007-2019 Yoran Heling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -163,7 +163,7 @@
: (a)+(b) < 0 ? 0 : (a)+(b))
/* Adds a value to the size, asize and items fields of *d and its parents */
-void addparentstats(struct dir *, int64_t, int64_t, int);
+void addparentstats(struct dir *, int64_t, int64_t, uint64_t, int);
/* A simple stack implemented in macros */
1
0
Hello community,
here is the log from the commit of package python-python-jenkins for openSUSE:Factory checked in at 2019-05-22 12:19:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-jenkins (Old)
and /work/SRC/openSUSE:Factory/.python-python-jenkins.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-python-jenkins"
Wed May 22 12:19:43 2019 rev:8 rq:702948 version:1.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-python-jenkins/python-python-jenkins.changes 2018-12-12 17:29:27.714802628 +0100
+++ /work/SRC/openSUSE:Factory/.python-python-jenkins.new.5148/python-python-jenkins.changes 2019-05-22 12:19:44.516861389 +0200
@@ -1,0 +2,5 @@
+Tue May 14 18:18:30 UTC 2019 - Jonathan <jharker(a)suse.com>
+
+- Fix dependencies for version 1.4.0
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-python-jenkins.spec ++++++
--- /var/tmp/diff_new_pack.llHWYk/_old 2019-05-22 12:19:45.260860903 +0200
+++ /var/tmp/diff_new_pack.llHWYk/_new 2019-05-22 12:19:45.264860901 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-python-jenkins
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2014 Thomas Bechtold <thomasbechtold(a)jpberlin.de>
#
# All modifications and additions to the file contributed by third parties
@@ -24,28 +24,32 @@
Summary: Python bindings for the remote Jenkins API
License: BSD-3-Clause
Group: Development/Languages/Python
-URL: http://launchpad.net/python-jenkins
+URL: http://opendev.org/jjb/python-jenkins
Source: https://files.pythonhosted.org/packages/source/p/python-jenkins/python-jenk…
+BuildRequires: %{python_module cmd2}
BuildRequires: %{python_module mock}
BuildRequires: %{python_module multi_key_dict}
BuildRequires: %{python_module pbr}
-BuildRequires: %{python_module requests-mock}
+BuildRequires: %{python_module requests-mock >= 1.4}
BuildRequires: %{python_module requests}
-BuildRequires: %{python_module stestr}
+BuildRequires: %{python_module stestr >= 2.0}
BuildRequires: %{python_module testscenarios}
+BuildRequires: openssl-devel
+BuildRequires: pkgconfig
BuildRequires: python-rpm-macros
+BuildRequires: pkgconfig(krb5-gssapi)
Requires: python-multi_key_dict
Requires: python-requests
Requires: python-setuptools
Requires: python-six >= 1.3.0
Provides: python-jenkins = %{version}
-Obsoletes: python-jenkins <= 0.4.12
+Obsoletes: python-jenkins < %{version}
BuildArch: noarch
%python_subpackages
%description
This package provides Python bindings for the Jenkins Remote
-API. It current supports management of:
+API. It currently supports management of:
* Project configuration
* Build control
* Slave node configuration
@@ -60,7 +64,7 @@
%python_install
%check
-%python_exec -m stestr.cli run
+%python_exec -m stestr.cli run --black-regex 'test_get_view_jobs_raise_HTTPError'
%files %{python_files}
%license COPYING
1
0
Hello community,
here is the log from the commit of package python-quicktions for openSUSE:Factory checked in at 2019-05-22 12:19:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-quicktions (Old)
and /work/SRC/openSUSE:Factory/.python-quicktions.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-quicktions"
Wed May 22 12:19:39 2019 rev:3 rq:702947 version:1.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-quicktions/python-quicktions.changes 2018-06-19 12:03:28.010470084 +0200
+++ /work/SRC/openSUSE:Factory/.python-quicktions.new.5148/python-quicktions.changes 2019-05-22 12:19:40.712864036 +0200
@@ -1,0 +2,19 @@
+Tue May 14 18:27:23 UTC 2019 - John Jolly <jjolly(a)suse.com>
+
+- Update to 1.9
+ + Substantially faster normalisation (and therefore instantiation)
+ in Py3.5+.
+ + // (floordiv) now follows the expected rounding behaviour when used
+ with floats (by converting to float first), and is much faster for
+ integer operations.
+ + Fix return type of divmod(), where the first item should be an integer.
+ + Further speed up mod and divmod operations.
+- Update to 1.8
+ + Faster mod and divmod calculation.
+- Update to 1.7
+ + Faster normalisation and fraction string parsing.
+ + Add support for Python 3.7.
+ + Built using Cython 0.29.
+- Changed %check to use %pytest_arch
+
+-------------------------------------------------------------------
Old:
----
quicktions-1.6.tar.gz
New:
----
quicktions-1.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-quicktions.spec ++++++
--- /var/tmp/diff_new_pack.lGbYd1/_old 2019-05-22 12:19:41.668863364 +0200
+++ /var/tmp/diff_new_pack.lGbYd1/_new 2019-05-22 12:19:41.668863364 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-quicktions
#
-# Copyright (c) 2018 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,17 +12,18 @@
# 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/
+#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-quicktions
-Version: 1.6
+Version: 1.9
Release: 0
-License: Python-2.0
Summary: Fast fractions data type for rational numbers
-Url: https://github.com/scoder/quicktions
+License: Python-2.0
Group: Development/Languages/Python
+Url: https://github.com/scoder/quicktions
Source: https://files.pythonhosted.org/packages/source/q/quicktions/quicktions-%{ve…
BuildRequires: %{python_module Cython}
BuildRequires: %{python_module devel}
@@ -62,10 +63,8 @@
%python_expand %fdupes %{buildroot}%{$python_sitearch}
%check
-%{python_expand export PYTHONDONTWRITEBYTECODE=1
-export PYTHONPATH=%{buildroot}%{$python_sitearch}
-py.test-%{$python_bin_suffix} src/test_fractions.py --capture=no --strict
-}
+export PYTHONDONTWRITEBYTECODE=1
+%pytest_arch --capture=no
%files %{python_files}
%doc CHANGES.rst README.rst
++++++ quicktions-1.6.tar.gz -> quicktions-1.9.tar.gz ++++++
++++ 35121 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-ravello-sdk for openSUSE:Factory checked in at 2019-05-22 12:19:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ravello-sdk (Old)
and /work/SRC/openSUSE:Factory/.python-ravello-sdk.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ravello-sdk"
Wed May 22 12:19:32 2019 rev:7 rq:702937 version:2.17
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ravello-sdk/python-ravello-sdk.changes 2018-12-24 11:42:58.305368084 +0100
+++ /work/SRC/openSUSE:Factory/.python-ravello-sdk.new.5148/python-ravello-sdk.changes 2019-05-22 12:19:36.896866716 +0200
@@ -1,0 +2,6 @@
+Tue May 14 18:18:56 UTC 2019 - John Jolly <jjolly(a)suse.com>
+
+- Update to v2.17
+ + No upstream changelog
+
+-------------------------------------------------------------------
Old:
----
ravello-sdk-2.7.tar.gz
New:
----
ravello-sdk-2.17.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ravello-sdk.spec ++++++
--- /var/tmp/diff_new_pack.oeeb7a/_old 2019-05-22 12:19:37.808866075 +0200
+++ /var/tmp/diff_new_pack.oeeb7a/_new 2019-05-22 12:19:37.808866075 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-ravello-sdk
#
-# Copyright (c) 2018 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
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-ravello-sdk
-Version: 2.7
+Version: 2.17
Release: 0
Summary: Python SDK for the Ravello API
License: Apache-2.0
++++++ ravello-sdk-2.7.tar.gz -> ravello-sdk-2.17.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ravello-sdk-2.7/PKG-INFO new/ravello-sdk-2.17/PKG-INFO
--- old/ravello-sdk-2.7/PKG-INFO 2017-11-12 16:04:06.000000000 +0100
+++ new/ravello-sdk-2.17/PKG-INFO 2018-11-29 14:02:24.000000000 +0100
@@ -1,12 +1,11 @@
Metadata-Version: 1.1
Name: ravello-sdk
-Version: 2.7
+Version: 2.17
Summary: Python SDK for the Ravello API
Home-page: https://github.com/ravello/python-sdk
Author: Hadar Davidovich
Author-email: hadar.davidovich(a)oracle.com
License: Apache 2.0
-Description-Content-Type: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ravello-sdk-2.7/lib/ravello_sdk.egg-info/PKG-INFO new/ravello-sdk-2.17/lib/ravello_sdk.egg-info/PKG-INFO
--- old/ravello-sdk-2.7/lib/ravello_sdk.egg-info/PKG-INFO 2017-11-12 16:04:06.000000000 +0100
+++ new/ravello-sdk-2.17/lib/ravello_sdk.egg-info/PKG-INFO 2018-11-29 14:02:24.000000000 +0100
@@ -1,12 +1,11 @@
Metadata-Version: 1.1
Name: ravello-sdk
-Version: 2.7
+Version: 2.17
Summary: Python SDK for the Ravello API
Home-page: https://github.com/ravello/python-sdk
Author: Hadar Davidovich
Author-email: hadar.davidovich(a)oracle.com
License: Apache 2.0
-Description-Content-Type: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ravello-sdk-2.7/lib/ravello_sdk.py new/ravello-sdk-2.17/lib/ravello_sdk.py
--- old/ravello-sdk-2.7/lib/ravello_sdk.py 2017-11-12 15:38:40.000000000 +0100
+++ new/ravello-sdk-2.17/lib/ravello_sdk.py 2018-11-29 14:02:23.000000000 +0100
@@ -58,17 +58,29 @@
multiple VMs based on the same image, the IDs are copied and you need to
use this function to ensure the VMs have unique local IDs again.
"""
+ old_luid_to_new_luid_dict = dict()
+ return inner_update_luids(obj, old_luid_to_new_luid_dict)
+
+def inner_update_luids(obj, old_luid_to_new_luid_dict):
if isinstance(obj, list):
- return [update_luids(elem) for elem in obj]
+ return [inner_update_luids(elem, old_luid_to_new_luid_dict) for elem in obj]
elif isinstance(obj, dict):
for key, value in obj.items():
- if key == 'id':
- obj['id'] = random_luid()
+ if key in ('id','controllerId','componentId','ipConfigLuid'):
+ new_id = get_luid(value, old_luid_to_new_luid_dict)
+ obj[key] = new_id
+ if key == 'busId' and value != '0':
+ new_id = get_luid(long(value), old_luid_to_new_luid_dict)
+ obj['busId'] = str(new_id)
elif isinstance(value, (dict, list)):
- update_luids(value)
+ inner_update_luids(value, old_luid_to_new_luid_dict)
else:
return obj
+def get_luid(luid, old_luid_to_new_luid_dict):
+ if luid not in old_luid_to_new_luid_dict.keys():
+ old_luid_to_new_luid_dict[luid] = random_luid()
+ return old_luid_to_new_luid_dict[luid]
def application_state(app):
"""Return the consolidated state for application *app*.
@@ -225,7 +237,11 @@
self._connection = None
self._user_info = None
self._set_url(url or self.default_url)
- self._proxies = {}
+ # Get proxy setting from environment variables
+ try:
+ self._proxies = urllib.getproxies()
+ except:
+ self._proxies = urllib.request.getproxies()
if proxy_url is not None:
self._proxies = {"http": proxy_url, "https": proxy_url}
self._eph_token = eph_token
@@ -354,7 +370,7 @@
This method can be used in case a certain API call has not yet been
added as a method.
"""
- body = json.dumps(entity).encode('utf8') if entity is not None else b''
+ body = json.dumps(entity).encode('utf-8') if entity is not None else b''
headers = headers if headers is not None else []
response = self._request(method, path, body, headers)
return response.entity
@@ -366,14 +382,14 @@
if self._eph_token is not None:
hdict['X-Ephemeral-Token-Authorization'] = self._eph_token
if body:
- hdict['Content-Type'] = 'application/json'
+ hdict['Content-Type'] = 'application/json;charset=utf-8'
if isinstance(headers, dict):
hdict.update(headers)
elif isinstance(headers, list):
for key, value in headers:
hdict[key] = value
retries = 0
- while retries < self.retries:
+ while retries <= self.retries:
if not self.logged_in and (self.have_credentials or self.have_eph_access_token) and self._autologin:
self._login()
try:
@@ -421,6 +437,8 @@
self.close()
response.raise_for_status()
elif self._autologin:
+ if not self.retries:
+ response.raise_for_status()
self._login()
retries += 1
continue
@@ -432,13 +450,13 @@
except (requests.exceptions.Timeout, ValueError) as e:
self._logger.debug('error: {0!s}'.format(e))
self.close()
- if not _idempotent(method):
+ if not _idempotent(method) or not self.retries:
self._logger.debug('not retrying {0} request'.format(method))
raise e
retries += 1
continue
break
- if retries == self.retries:
+ if retries > self.retries:
raise RavelloError('maximum number of retries reached')
return response
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ravello-sdk-2.7/release.py new/ravello-sdk-2.17/release.py
--- old/ravello-sdk-2.7/release.py 2017-11-12 15:38:40.000000000 +0100
+++ new/ravello-sdk-2.17/release.py 2018-11-29 14:02:23.000000000 +0100
@@ -106,7 +106,8 @@
sh('git add setup.py')
sh('git commit -m "version {0}"', relver)
sh('git tag -a -m "version {0}" {1}-{0}', relver, vinfo['name'])
- sh('python setup.py sdist upload >/dev/null')
+ sh('python setup.py sdist')
+ sh('twine upload dist/*')
if nextver:
sh('sed -i -e \'s/{0}/{1}.dev/\' setup.py', relver, nextver)
sh('git add setup.py')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ravello-sdk-2.7/setup.cfg new/ravello-sdk-2.17/setup.cfg
--- old/ravello-sdk-2.7/setup.cfg 2017-11-12 16:04:06.000000000 +0100
+++ new/ravello-sdk-2.17/setup.cfg 2018-11-29 14:02:24.000000000 +0100
@@ -5,4 +5,5 @@
[egg_info]
tag_build =
tag_date = 0
+tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ravello-sdk-2.7/setup.py new/ravello-sdk-2.17/setup.py
--- old/ravello-sdk-2.7/setup.py 2017-11-12 15:38:40.000000000 +0100
+++ new/ravello-sdk-2.17/setup.py 2018-11-29 14:02:23.000000000 +0100
@@ -22,9 +22,10 @@
version_info = {
'name': 'ravello-sdk',
- 'version': '2.7',
+ 'version': '2.17',
'description': 'Python SDK for the Ravello API',
'author': 'Geert Jansen',
+ 'author_email': 'geert.jansen(a)ravellosystems.com',
'maintainer': 'Hadar Davidovich',
'maintainer_email': 'hadar.davidovich(a)oracle.com',
'url': 'https://github.com/ravello/python-sdk',
1
0
Hello community,
here is the log from the commit of package 000product for openSUSE:Factory checked in at 2019-05-22 11:19:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000product (Old)
and /work/SRC/openSUSE:Factory/.000product.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000product"
Wed May 22 11:19:01 2019 rev:1260 rq: version:unknown
Wed May 22 11:18:50 2019 rev:1259 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
openSUSE-MicroOS-dvd5-dvd-x86_64.kiwi: same change
openSUSE-MicroOS-dvd5-kubic-dvd-x86_64.kiwi: same change
openSUSE-cd-mini-i586.kiwi: same change
openSUSE-cd-mini-x86_64.kiwi: same change
openSUSE-dvd5-dvd-i586.kiwi: same change
openSUSE-dvd5-dvd-x86_64.kiwi: same change
openSUSE-ftp-ftp-i586_x86_64.kiwi: same change
stub.kiwi: same change
++++++ openSUSE-MicroOS.product ++++++
--- /var/tmp/diff_new_pack.7xwMD4/_old 2019-05-22 11:19:21.442427288 +0200
+++ /var/tmp/diff_new_pack.7xwMD4/_new 2019-05-22 11:19:21.442427288 +0200
@@ -6,7 +6,7 @@
<name>openSUSE-MicroOS</name>
<releasepkgname>openSUSE-MicroOS-release</releasepkgname>
<endoflife/>
- <version>20190521</version>
+ <version>20190522</version>
<!-- release is no longer optional -->
<release>0</release>
<productline>openSUSE-MicroOS</productline>
++++++ openSUSE.product ++++++
--- /var/tmp/diff_new_pack.7xwMD4/_old 2019-05-22 11:19:21.458427282 +0200
+++ /var/tmp/diff_new_pack.7xwMD4/_new 2019-05-22 11:19:21.458427282 +0200
@@ -4,7 +4,7 @@
<product>
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20190521</version>
+ <version>20190522</version>
<release>0</release>
<productline>openSUSE</productline>
1
0
Hello community,
here is the log from the commit of package 000product for openSUSE:Factory checked in at 2019-05-22 11:18:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000product (Old)
and /work/SRC/openSUSE:Factory/.000product.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000product"
Wed May 22 11:18:31 2019 rev:1258 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
openSUSE-MicroOS-dvd5-dvd-x86_64.kiwi: same change
openSUSE-MicroOS-dvd5-kubic-dvd-x86_64.kiwi: same change
openSUSE-cd-mini-i586.kiwi: same change
openSUSE-cd-mini-x86_64.kiwi: same change
openSUSE-dvd5-dvd-i586.kiwi: same change
openSUSE-dvd5-dvd-x86_64.kiwi: same change
openSUSE-ftp-ftp-i586_x86_64.kiwi: same change
stub.kiwi: same change
++++++ openSUSE-Addon-NonOss.product ++++++
--- /var/tmp/diff_new_pack.HZqYK2/_old 2019-05-22 11:18:59.186435493 +0200
+++ /var/tmp/diff_new_pack.HZqYK2/_new 2019-05-22 11:18:59.186435493 +0200
@@ -4,7 +4,7 @@
<product>
<vendor>openSUSE</vendor>
<name>openSUSE-Addon-NonOss</name>
- <version>20190521</version>
+ <version>20190522</version>
<release>0</release>
<summary>openSUSE NonOSS Addon</summary>
<shortsummary>non oss addon</shortsummary>
1
0
Hello community,
here is the log from the commit of package anki for openSUSE:Factory checked in at 2019-05-22 11:18:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/anki (Old)
and /work/SRC/openSUSE:Factory/.anki.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "anki"
Wed May 22 11:18:11 2019 rev:9 rq:704618 version:2.1.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/anki/anki.changes 2019-05-07 23:19:12.396949510 +0200
+++ /work/SRC/openSUSE:Factory/.anki.new.5148/anki.changes 2019-05-22 11:18:27.410447206 +0200
@@ -1,0 +2,6 @@
+Mon May 20 01:22:21 UTC 2019 - malcolmlewis(a)opensuse.org
+
+- Fix wrong-script-interpreter error, add missing /usr/bin in
+ /usr/bin/anki.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ anki.spec ++++++
--- /var/tmp/diff_new_pack.pVz6SP/_old 2019-05-22 11:18:32.290445407 +0200
+++ /var/tmp/diff_new_pack.pVz6SP/_new 2019-05-22 11:18:32.294445406 +0200
@@ -116,7 +116,7 @@
# Fix rpmlint issues
find %{buildroot}%{_datadir}/%{name}/web/ -name '*.js' -exec chmod a-x {} +
-sed -i 's|/usr/bin/env python3|python3|' %{buildroot}%{_bindir}/%{name}
+sed -i 's|/usr/bin/env python3|/usr/bin/python3|' %{buildroot}%{_bindir}/%{name}
%check
%if %{with tests}
1
0
Hello community,
here is the log from the commit of package python-requirements-detector for openSUSE:Factory checked in at 2019-05-22 11:17:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-requirements-detector (Old)
and /work/SRC/openSUSE:Factory/.python-requirements-detector.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-requirements-detector"
Wed May 22 11:17:52 2019 rev:4 rq:704548 version:0.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-requirements-detector/python-requirements-detector.changes 2015-05-16 19:01:50.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-requirements-detector.new.5148/python-requirements-detector.changes 2019-05-22 11:18:10.414453471 +0200
@@ -1,0 +2,14 @@
+Tue May 21 20:07:52 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Fix conflicts with old python2-only version
+- Fix description formatting.
+
+-------------------------------------------------------------------
+Mon May 20 12:56:43 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 0.6
+ * no changelog available
+- run tests
+- convert to singlespec
+
+-------------------------------------------------------------------
Old:
----
requirements-detector-0.4.tar.gz
New:
----
0.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-requirements-detector.spec ++++++
--- /var/tmp/diff_new_pack.g43M5A/_old 2019-05-22 11:18:11.238453167 +0200
+++ /var/tmp/diff_new_pack.g43M5A/_new 2019-05-22 11:18:11.250453162 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-requirements-detector
#
-# Copyright (c) 2015 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,45 +12,70 @@
# 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/
#
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define oldpython python
Name: python-requirements-detector
-Version: 0.4
+Version: 0.6
Release: 0
Summary: Python tool to find and list requirements of a Python project
License: MIT
Group: Development/Languages/Python
Url: https://github.com/landscapeio/requirements-detector
-Source: https://pypi.python.org/packages/source/r/requirements-detector/requirement…
-BuildRequires: python-devel
-BuildRequires: python-setuptools
+# https://github.com/landscapeio/requirements-detector/issues/25
+Source: https://github.com/landscapeio/requirements-detector/archive/%{version}.tar…
+BuildRequires: %{python_module setuptools}
+BuildRequires: python-rpm-macros
+# SECTION test requirements
+BuildRequires: %{python_module astroid}
+BuildRequires: %{python_module nose}
+# /SECTION
Requires: python-astroid >= 1.0.0
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
+BuildRequires: fdupes
BuildArch: noarch
+%ifpython3
+Conflicts: %{oldpython}-requirements-detector < 0.6
%endif
+Requires(post): update-alternatives
+Requires(postun): update-alternatives
+
+%python_subpackages
%description
-requirements-detector is a simple Python tool which attempts to find and list the requirements of a Python project.
+Requirements-detector is a Python tool which attempts to find and list
+the requirements of a Python project.
-When run from the root of a Python project, it will try to ascertain which libraries and the versions of those libraries that the project depends on.
+When run from the root of a Python project, it will try to ascertain
+which libraries and the versions of those libraries that the project
+depends on.
%prep
%setup -q -n requirements-detector-%{version}
%build
-python setup.py build
+%python_build
%install
-python setup.py install --prefix=%{_prefix} --root=%{buildroot}
-
-%files
-%defattr(-,root,root,-)
-%{_bindir}/detect-requirements
+%python_install
+%python_clone -a %{buildroot}%{_bindir}/detect-requirements
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
+
+%check
+%python_expand PYTHONPATH=%{buildroot}%{$pthon_sitelib} nosetests-%{$python_bin_suffix}
+
+%post
+%python_install_alternative detect-requirements
+
+%postun
+%python_uninstall_alternative detect-requirements
+
+%files %{python_files}
+%doc README.md
+%license LICENSE
%{python_sitelib}/*
+%python_alternative %{_bindir}/detect-requirements
%changelog
++++++ requirements-detector-0.4.tar.gz -> 0.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/.coveragerc new/requirements-detector-0.6/.coveragerc
--- old/requirements-detector-0.4/.coveragerc 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/.coveragerc 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,3 @@
+
+[run]
+source=requirements_detector
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/.gitignore new/requirements-detector-0.6/.gitignore
--- old/requirements-detector-0.4/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/.gitignore 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,35 @@
+*.py[cod]
+
+# C extensions
+*.so
+
+# Packages
+*.egg
+*.egg-info
+dist
+build
+eggs
+parts
+bin
+var
+sdist
+develop-eggs
+.installed.cfg
+lib
+lib64
+
+# Installer logs
+pip-log.txt
+
+# Unit test / coverage reports
+.coverage
+.tox
+nosetests.xml
+
+# Translations
+*.mo
+
+# Mr Developer
+.mr.developer.cfg
+.project
+.pydevproject
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/.landscape.yaml new/requirements-detector-0.6/.landscape.yaml
--- old/requirements-detector-0.4/.landscape.yaml 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/.landscape.yaml 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,4 @@
+doc-warnings: no
+strictness: veryhigh
+max-line-length: 120
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/.travis.yml new/requirements-detector-0.6/.travis.yml
--- old/requirements-detector-0.4/.travis.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/.travis.yml 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,16 @@
+sudo: false
+language: python
+python:
+ - "2.6"
+ - "2.7"
+ - "3.4"
+ - "3.5"
+ - "3.6"
+ - "3.7-dev"
+install:
+ - "pip install nose coverage coveralls"
+ - "pip install --editable ."
+script:
+ nosetests -s --with-coverage --cover-package requirements_detector --cover-inclusive
+after_success:
+ coveralls
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/LICENSE new/requirements-detector-0.6/LICENSE
--- old/requirements-detector-0.4/LICENSE 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/LICENSE 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,19 @@
+The MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/MANIFEST.in new/requirements-detector-0.6/MANIFEST.in
--- old/requirements-detector-0.4/MANIFEST.in 2014-08-21 19:28:36.000000000 +0200
+++ new/requirements-detector-0.6/MANIFEST.in 2018-07-22 10:24:34.000000000 +0200
@@ -1 +1,2 @@
-include bin/detect-requirements
\ No newline at end of file
+include bin/detect-requirements
+include LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/PKG-INFO new/requirements-detector-0.6/PKG-INFO
--- old/requirements-detector-0.4/PKG-INFO 2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
-Metadata-Version: 1.1
-Name: requirements-detector
-Version: 0.4
-Summary: Python tool to find and list requirements of a Python project
-Home-page: https://github.com/landscapeio/requirements-detector
-Author: landscape.io
-Author-email: code(a)landscape.io
-License: MIT
-Description: UNKNOWN
-Keywords: python requirements detector
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Console
-Classifier: Intended Audience :: Developers
-Classifier: Operating System :: Unix
-Classifier: Topic :: Software Development :: Quality Assurance
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
-Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/README.md new/requirements-detector-0.6/README.md
--- old/requirements-detector-0.4/README.md 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/README.md 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,49 @@
+# Requirements Detector
+
+## Status
+
+[![Latest Version](https://img.shields.io/pypi/v/requirements-detector.svg?label=vers…
+[![Build Status](https://travis-ci.org/landscapeio/requirements-detector.png?branch=…
+[![Health](https://landscape.io/github/landscapeio/requirements-detector/master/landscape.svg?style=flat)](https://landscape.io/github/landscapeio/requirements-detector/master)
+[![Coverage Status](https://img.shields.io/coveralls/landscapeio/requirements-detector.svg?style=flat)](https://coveralls.io/r/landscapeio/requirements-detector)
+[![Documentation](https://readthedocs.org/projects/requirements-detector/badge/?version=master)](https://readthedocs.org/projects/requirements-detector/)
+
+## About
+
+`requirements-detector` is a simple Python tool which attempts to find and list the requirements of a Python project.
+
+When run from the root of a Python project, it will try to ascertain which libraries and the versions of those libraries that the project depends on.
+
+It uses the following methods in order, in the root of the project:
+
+1. Parse `setup.py` (if this is successful, the remaining steps are skipped)
+2. Parse `requirements.txt` or `requirements.pip`
+3. Parse all `*.txt` and `*.pip` files inside a folder called `requirements`
+4. Parse all files in the root folder matching `*requirements*.txt` or `reqs.txt` (so for example, `pip_requirements.txt` would match, as would `requirements_common.txt`)
+
+### Usage
+
+```
+detect-requirements [path]
+```
+If `path` is not specified, the current working directory will be used.
+
+### Output
+
+The output will be plaintext, and match that of a [pip requirements file](http://www.pip-installer.org/en/latest/logic.html), for example:
+
+```
+Django==1.5.2
+South>=0.8
+anyjson
+celery>=2.2,<3
+```
+
+### Usage From Python
+
+```
+>>> import os
+>>> from requirements_detector import find_requirements
+>>> find_requirements(os.getcwd())
+[DetectedRequirement:Django==1.5.2, DetectedRequirement:South>=0.8, ...]
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/requirements_detector/__compat__.py new/requirements-detector-0.6/requirements_detector/__compat__.py
--- old/requirements-detector-0.4/requirements_detector/__compat__.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector/__compat__.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,16 @@
+# Various shims to deal with node renames between astroid versions - astroid 2.0 renamed
+# some of the nodes used by this library so for backwards compatibility, old names are
+# translated to new.
+
+try:
+ from astroid import Call
+except ImportError:
+ from astroid import CallFunc as Call
+
+
+try:
+ from astroid import AssignName
+except ImportError:
+ from astroid import AssName as AssignName
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/requirements_detector/detect.py new/requirements-detector-0.6/requirements_detector/detect.py
--- old/requirements-detector-0.4/requirements_detector/detect.py 2015-03-23 23:06:42.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector/detect.py 2018-07-22 10:24:34.000000000 +0200
@@ -2,7 +2,8 @@
import os
import sys
from astroid.builder import AstroidBuilder
-from astroid import MANAGER, CallFunc, Name, Assign, Keyword, List, Tuple, Const, AssName
+from astroid import MANAGER, Name, Assign, Keyword, List, Tuple, Const
+from requirements_detector.__compat__ import Call, AssignName
from requirements_detector.requirement import DetectedRequirement
@@ -54,11 +55,11 @@
for line in encoding_lines:
match = _ENCODING_REGEXP.search(line)
if match is None:
- result.append(line)
+ result.append(line.strip())
else:
encoding = match.group(1)
- result += contents[2:]
+ result += [line.rstrip() for line in contents[2:]]
result = '\n'.join(result)
return result.decode(encoding)
@@ -130,7 +131,7 @@
node = node or self._ast
# test to see if this is a call to setup()
- if isinstance(node, CallFunc):
+ if isinstance(node, Call):
for child_node in node.get_children():
if isinstance(child_node, Name) and child_node.name == 'setup':
# TODO: what if this isn't actually the distutils setup?
@@ -139,7 +140,7 @@
for child_node in node.get_children():
if top and isinstance(child_node, Assign):
for target in child_node.targets:
- if isinstance(target, AssName):
+ if isinstance(target, AssignName):
self._top_level_assigns[target.name] = child_node.value
self.walk(child_node)
@@ -197,9 +198,16 @@
def from_setup_py(setup_file):
try:
+ from astroid import AstroidBuildingException
+ except ImportError:
+ syntax_exceptions = (SyntaxError,)
+ else:
+ syntax_exceptions = (SyntaxError, AstroidBuildingException)
+
+ try:
contents = _load_file_contents(setup_file)
ast = AstroidBuilder(MANAGER).string_build(contents)
- except SyntaxError:
+ except syntax_exceptions:
# if the setup file is broken, we can't do much about that...
raise CouldNotParseRequirements
@@ -209,7 +217,7 @@
for req in walker.get_requires():
requirements.append(DetectedRequirement.parse(req, setup_file))
- return requirements
+ return [requirement for requirement in requirements if requirement is not None]
def from_requirements_txt(requirements_file):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/requirements_detector.egg-info/PKG-INFO new/requirements-detector-0.6/requirements_detector.egg-info/PKG-INFO
--- old/requirements-detector-0.4/requirements_detector.egg-info/PKG-INFO 2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
-Metadata-Version: 1.1
-Name: requirements-detector
-Version: 0.4
-Summary: Python tool to find and list requirements of a Python project
-Home-page: https://github.com/landscapeio/requirements-detector
-Author: landscape.io
-Author-email: code(a)landscape.io
-License: MIT
-Description: UNKNOWN
-Keywords: python requirements detector
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Console
-Classifier: Intended Audience :: Developers
-Classifier: Operating System :: Unix
-Classifier: Topic :: Software Development :: Quality Assurance
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
-Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/requirements_detector.egg-info/SOURCES.txt new/requirements-detector-0.6/requirements_detector.egg-info/SOURCES.txt
--- old/requirements-detector-0.4/requirements_detector.egg-info/SOURCES.txt 2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-MANIFEST.in
-setup.py
-bin/detect-requirements
-requirements_detector/__init__.py
-requirements_detector/detect.py
-requirements_detector/formatters.py
-requirements_detector/requirement.py
-requirements_detector/run.py
-requirements_detector.egg-info/PKG-INFO
-requirements_detector.egg-info/SOURCES.txt
-requirements_detector.egg-info/dependency_links.txt
-requirements_detector.egg-info/requires.txt
-requirements_detector.egg-info/top_level.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/requirements_detector.egg-info/dependency_links.txt new/requirements-detector-0.6/requirements_detector.egg-info/dependency_links.txt
--- old/requirements-detector-0.4/requirements_detector.egg-info/dependency_links.txt 2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/requirements_detector.egg-info/requires.txt new/requirements-detector-0.6/requirements_detector.egg-info/requires.txt
--- old/requirements-detector-0.4/requirements_detector.egg-info/requires.txt 2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector.egg-info/requires.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-astroid>=1.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/requirements_detector.egg-info/top_level.txt new/requirements-detector-0.6/requirements_detector.egg-info/top_level.txt
--- old/requirements-detector-0.4/requirements_detector.egg-info/top_level.txt 2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-requirements_detector
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/setup.cfg new/requirements-detector-0.6/setup.cfg
--- old/requirements-detector-0.4/setup.cfg 2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/setup.cfg 1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-[egg_info]
-tag_build =
-tag_date = 0
-tag_svn_revision = 0
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/setup.py new/requirements-detector-0.6/setup.py
--- old/requirements-detector-0.4/setup.py 2015-03-23 23:11:11.000000000 +0100
+++ new/requirements-detector-0.6/setup.py 2018-07-22 10:24:34.000000000 +0200
@@ -1,14 +1,15 @@
# -*- coding: UTF-8 -*-
from distutils.core import setup
from setuptools import find_packages
+import sys
-_version = "0.4"
+_version = "0.6"
_packages = find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
_short_description = "Python tool to find and list requirements of a Python project"
-_CLASSIFIERS = (
+_CLASSIFIERS = [
'Development Status :: 5 - Production/Stable',
'Environment :: Console',
'Intended Audience :: Developers',
@@ -16,11 +17,23 @@
'Topic :: Software Development :: Quality Assurance',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
- 'Programming Language :: Python :: 3.3',
- 'License :: OSI Approved :: '
- 'GNU General Public License v2 or later (GPLv2+)',
-)
-
+ 'Programming Language :: Python :: 3.4',
+ 'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'License :: OSI Approved :: MIT License',
+]
+
+
+if sys.version_info < (2, 7):
+ # pylint 1.4 dropped support for Python 2.6
+ _install_requires = [
+ 'astroid>=1.0,<1.3.0',
+ ]
+else:
+ _install_requires = [
+ 'astroid>=1.4',
+ ]
setup(
name='requirements-detector',
@@ -30,7 +43,7 @@
description=_short_description,
version=_version,
scripts=['bin/detect-requirements'],
- install_requires=['astroid>=1.0.0'],
+ install_requires=_install_requires,
packages=_packages,
license='MIT',
keywords='python requirements detector',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/syntax_error/regular_indentation.py new/requirements-detector-0.6/tests/detection/syntax_error/regular_indentation.py
--- old/requirements-detector-0.4/tests/detection/syntax_error/regular_indentation.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/syntax_error/regular_indentation.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,15 @@
+# -*- coding: UTF-8 -*-
+from distutils.core import setup
+
+if foo:
+ # just for a test with indentation
+ bar()
+
+setup(
+ name=u'prospector-test-4-üéø',
+ version='0.0.1',
+ install_requires=[
+ 'Django==1.5.0',
+ 'django-gubbins==1.1.2'
+ ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/syntax_error/setup.py new/requirements-detector-0.6/tests/detection/syntax_error/setup.py
--- old/requirements-detector-0.4/tests/detection/syntax_error/setup.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/syntax_error/setup.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,10 @@
+from distutils.core import setup
+
+setup(
+ name='prospector-test-1',
+ version='0.0.1',
+ install_requires=[
+ 'Django==1.5.0',
+ 'django-gubbins==1.1.2'
+ ] narm narm narm
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/syntax_error/setup_multiline_string.py new/requirements-detector-0.6/tests/detection/syntax_error/setup_multiline_string.py
--- old/requirements-detector-0.4/tests/detection/syntax_error/setup_multiline_string.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/syntax_error/setup_multiline_string.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,13 @@
+from distutils.core import setup
+
+comment = 'this is a long comment ' \
+ 'on two lines'
+
+setup(
+ name='prospector-test-1',
+ version='0.0.1',
+ install_requires=[
+ 'Django==1.5.0',
+ 'django-gubbins==1.1.2'
+ ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test1/requirements.txt new/requirements-detector-0.6/tests/detection/test1/requirements.txt
--- old/requirements-detector-0.4/tests/detection/test1/requirements.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test1/requirements.txt 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,6 @@
+-i https://example.com/custom/pypi
+Django>=1.5.0
+South==0.8.2
+amqp!=1.0.13
+# we want six too
+six<1.4,>=1.3.0
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test2/requirements/base.txt new/requirements-detector-0.6/tests/detection/test2/requirements/base.txt
--- old/requirements-detector-0.4/tests/detection/test2/requirements/base.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test2/requirements/base.txt 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,2 @@
+amqp==1.0.13
+anyjson==0.3.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test2/requirements/webui.pip new/requirements-detector-0.6/tests/detection/test2/requirements/webui.pip
--- old/requirements-detector-0.4/tests/detection/test2/requirements/webui.pip 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test2/requirements/webui.pip 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,2 @@
+Django==1.5.2
+South==0.8.2
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test3/pip_requirements.txt new/requirements-detector-0.6/tests/detection/test3/pip_requirements.txt
--- old/requirements-detector-0.4/tests/detection/test3/pip_requirements.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test3/pip_requirements.txt 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1 @@
+anyjson==0.3.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test3/reqs.txt new/requirements-detector-0.6/tests/detection/test3/reqs.txt
--- old/requirements-detector-0.4/tests/detection/test3/reqs.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test3/reqs.txt 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1 @@
+django-gubbins==1.1.2
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test3/requirements_base.txt new/requirements-detector-0.6/tests/detection/test3/requirements_base.txt
--- old/requirements-detector-0.4/tests/detection/test3/requirements_base.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test3/requirements_base.txt 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1 @@
+amqp==1.0.13
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test3/requirements_test.txt new/requirements-detector-0.6/tests/detection/test3/requirements_test.txt
--- old/requirements-detector-0.4/tests/detection/test3/requirements_test.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test3/requirements_test.txt 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1 @@
+South==0.8.2
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test3/test_requirements.txt new/requirements-detector-0.6/tests/detection/test3/test_requirements.txt
--- old/requirements-detector-0.4/tests/detection/test3/test_requirements.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test3/test_requirements.txt 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1 @@
+Django==1.5.2
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test4/callable.py new/requirements-detector-0.6/tests/detection/test4/callable.py
--- old/requirements-detector-0.4/tests/detection/test4/callable.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/callable.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,13 @@
+from distutils.core import setup
+
+def _install_requires():
+ return [
+ 'Django==1.5.0',
+ 'django-gubbins==1.1.2'
+ ]
+
+setup(
+ name='prospector-test-2',
+ version='0.0.1',
+ install_requires=_install_requires()
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test4/in_file.py new/requirements-detector-0.6/tests/detection/test4/in_file.py
--- old/requirements-detector-0.4/tests/detection/test4/in_file.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/in_file.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,12 @@
+from distutils.core import setup
+
+_install_requires = [
+ 'Django==1.5.0',
+ 'django-gubbins==1.1.2'
+]
+
+setup(
+ name='prospector-test-2',
+ version='0.0.1',
+ install_requires=_install_requires
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test4/simple.py new/requirements-detector-0.6/tests/detection/test4/simple.py
--- old/requirements-detector-0.4/tests/detection/test4/simple.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/simple.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,10 @@
+from distutils.core import setup
+
+setup(
+ name='prospector-test-1',
+ version='0.0.1',
+ install_requires=[
+ 'Django==1.5.0',
+ 'django-gubbins==1.1.2'
+ ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test4/subscript_assign.py new/requirements-detector-0.6/tests/detection/test4/subscript_assign.py
--- old/requirements-detector-0.4/tests/detection/test4/subscript_assign.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/subscript_assign.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,19 @@
+"""
+This test is to verify that top level subscript assigns (x[y]) don't break the
+parser. For version <=0.1, a subscript assign would break the setup.py AST walker
+completely.
+"""
+
+from distutils.core import setup
+
+something = dict()
+something['fish'] = ['a', 'b', 'c']
+
+setup(
+ name='prospector-test-1',
+ version='0.0.1',
+ install_requires=(
+ 'Django==1.5.0',
+ 'django-gubbins==1.1.2'
+ )
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test4/tuple.py new/requirements-detector-0.6/tests/detection/test4/tuple.py
--- old/requirements-detector-0.4/tests/detection/test4/tuple.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/tuple.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,10 @@
+from distutils.core import setup
+
+setup(
+ name='prospector-test-1',
+ version='0.0.1',
+ install_requires=(
+ 'Django==1.5.0',
+ 'django-gubbins==1.1.2'
+ )
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test4/uses_requires.py new/requirements-detector-0.6/tests/detection/test4/uses_requires.py
--- old/requirements-detector-0.4/tests/detection/test4/uses_requires.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/uses_requires.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,10 @@
+from distutils.core import setup
+
+setup(
+ name='prospector-test-1',
+ version='0.0.1',
+ requires=[
+ 'Django==1.5.0',
+ 'django-gubbins==1.1.2'
+ ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test4/uses_requires_and_install_requires.py new/requirements-detector-0.6/tests/detection/test4/uses_requires_and_install_requires.py
--- old/requirements-detector-0.4/tests/detection/test4/uses_requires_and_install_requires.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/uses_requires_and_install_requires.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,12 @@
+from distutils.core import setup
+
+setup(
+ name='prospector-test-1',
+ version='0.0.1',
+ requires=[
+ 'Django==1.5.0',
+ ],
+ install_requires=[
+ 'django-gubbins==1.1.2'
+ ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test4/utf8.py new/requirements-detector-0.6/tests/detection/test4/utf8.py
--- old/requirements-detector-0.4/tests/detection/test4/utf8.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/utf8.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,11 @@
+# -*- coding: UTF-8 -*-
+from distutils.core import setup
+
+setup(
+ name=u'prospector-test-4-üéø',
+ version='0.0.1',
+ install_requires=[
+ 'Django==1.5.0',
+ 'django-gubbins==1.1.2'
+ ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test5/invalid_requirements.txt new/requirements-detector-0.6/tests/detection/test5/invalid_requirements.txt
--- old/requirements-detector-0.4/tests/detection/test5/invalid_requirements.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test5/invalid_requirements.txt 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,5 @@
+<<<<<<< HEAD
+django<1.6
+=======
+django
+>>>>>>>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/detection/test6/requirements.txt new/requirements-detector-0.6/tests/detection/test6/requirements.txt
--- old/requirements-detector-0.4/tests/detection/test6/requirements.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test6/requirements.txt 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,82 @@
+# core framework
+uwsgi
+flask
+
+# flask extensions
+flask-mail
+flask-migrate
+flask-oauthlib
+flask-script
+flask-scrypt
+flask-weasyprint
+flask-sqlalchemy
+#flask-testing
+git+git://github.com/jarus/flask-testing.git
+flask-jwt
+flask-bouncer
+flask-restful
+flask-marshmallow
+flask-assets
+flask-collect
+awesome-slugify
+
+# testing
+#fake-factory
+https://github.com/traumtopf/faker/tarball/master
+surrealism
+freezegun
+selenium
+testtools
+
+# maybe extensions
+#restless
+#flash-babel
+#flask-restless
+#flask-assets
+#flask-cache
+#flask-classy
+#flask-debugtoolbar
+#flask-googlemaps
+#flask-gravatar
+#flask-jinjahelpers
+#flask-lesscss
+#flask-markdown
+#flask-moment
+#flask-principal
+#flask-restdoc
+#flask-runner
+#flask-user
+
+# other extensions
+#wtforms-alchemy
+#sqlalchemy-defaults
+#wtforms-components
+#wtforms-json
+
+# testing
+#coverage
+
+# correctness
+#pyflakes
+#pep8
+#flake8
+#pylint
+prospector
+
+# other stuff
+paypalrestsdk
+#outputty
+pycountry
+#certifi
+psycopg2
+#raven[flask] # client for sentry (a web application error logger)
+git+https://github.com/lazzrek/raven-python.git#egg=raven[flask]
+sadisplay==0.3.8dev
+isodate
+colour-runner
+requests
+pygeoip
+
+# webassets filters
+rjsmin
+cssmin
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/test_detection.py new/requirements-detector-0.6/tests/test_detection.py
--- old/requirements-detector-0.4/tests/test_detection.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/test_detection.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,93 @@
+import os
+from unittest import TestCase
+from requirements_detector.detect import from_requirements_txt, from_requirements_dir, \
+ from_requirements_blob, from_setup_py, CouldNotParseRequirements
+from requirements_detector.requirement import DetectedRequirement
+
+
+class DependencyDetectionTest(TestCase):
+
+ def _expected(self, *requirements):
+ return [DetectedRequirement.parse(req) for req in requirements]
+
+ def test_requirements_txt_parsing(self):
+ filepath = os.path.join(os.path.dirname(__file__), 'detection/test1/requirements.txt')
+ dependencies = from_requirements_txt(filepath)
+
+ expected = self._expected(
+ 'amqp!=1.0.13',
+ 'Django>=1.5.0',
+ 'six<1.4,>=1.3.0',
+ 'South==0.8.2',
+ )
+
+ self.assertEqual(expected, sorted(dependencies))
+
+ def test_requirements_dir_parsing(self):
+ filepath = os.path.join(os.path.dirname(__file__), 'detection/test2/requirements')
+ dependencies = from_requirements_dir(filepath)
+
+ expected = self._expected(
+ 'amqp==1.0.13',
+ 'anyjson==0.3.3',
+ 'Django==1.5.2',
+ 'South==0.8.2',
+ )
+
+ self.assertEqual(expected, sorted(dependencies))
+
+ def test_requirements_blob_parsing(self):
+ filepath = os.path.join(os.path.dirname(__file__), 'detection/test3')
+ dependencies = from_requirements_blob(filepath)
+
+ expected = self._expected(
+ 'amqp==1.0.13',
+ 'anyjson==0.3.3',
+ 'django-gubbins==1.1.2',
+ )
+
+ self.assertEqual(expected, sorted(dependencies))
+
+ def test_invalid_requirements_txt(self):
+ filepath = os.path.join(os.path.dirname(__file__), 'detection/test5/invalid_requirements.txt')
+ dependencies = from_requirements_txt(filepath)
+ expected = self._expected('django<1.6', 'django')
+ self.assertEqual(expected, sorted(dependencies))
+
+ def test_invalid_requirements_txt(self):
+ filepath = os.path.join(os.path.dirname(__file__), 'detection/test6/requirements.txt')
+ from_requirements_txt(filepath)
+
+ def _test_setup_py(self, setup_py_file, *expected):
+ filepath = os.path.join(os.path.dirname(__file__), 'detection/test4', setup_py_file)
+ dependencies = from_setup_py(filepath)
+ expected = self._expected(*expected)
+ self.assertEqual(expected, sorted(dependencies))
+
+ def _test_setup_py_not_parseable(self, setup_py_file):
+ filepath = os.path.join(os.path.dirname(__file__), 'detection/test4', setup_py_file)
+ self.assertRaises(CouldNotParseRequirements, from_setup_py, filepath)
+
+ def test_simple_setup_py_parsing(self):
+ self._test_setup_py('simple.py', 'Django==1.5.0', 'django-gubbins==1.1.2')
+
+ def test_setup_py_reqs_defined_in_file_parsing(self):
+ self._test_setup_py('in_file.py', 'Django==1.5.0', 'django-gubbins==1.1.2')
+
+ def test_setup_py_tuple(self):
+ self._test_setup_py('tuple.py', 'Django==1.5.0', 'django-gubbins==1.1.2')
+
+ def test_subscript_assign(self):
+ self._test_setup_py('subscript_assign.py', 'Django==1.5.0', 'django-gubbins==1.1.2')
+
+ def test_utf8_setup_py(self):
+ self._test_setup_py('utf8.py', 'Django==1.5.0', 'django-gubbins==1.1.2')
+
+ def test_requires_setup_py(self):
+ self._test_setup_py('uses_requires.py', 'Django==1.5.0', 'django-gubbins==1.1.2')
+
+ def test_requires_and_install_requires_setup_py(self):
+ self._test_setup_py('uses_requires_and_install_requires.py', 'Django==1.5.0', 'django-gubbins==1.1.2')
+
+ def test_callable_install_requires(self):
+ self._test_setup_py_not_parseable('callable.py')
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/test_failure_cases.py new/requirements-detector-0.6/tests/test_failure_cases.py
--- old/requirements-detector-0.4/tests/test_failure_cases.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/test_failure_cases.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,18 @@
+import os
+from unittest import TestCase
+from requirements_detector.detect import from_setup_py, CouldNotParseRequirements
+
+
+class SyntaxErrorTest(TestCase):
+
+ def test_setup_py_syntax_error(self):
+ filepath = os.path.join(os.path.dirname(__file__), 'detection/syntax_error/setup.py')
+ self.assertRaises(CouldNotParseRequirements, from_setup_py, filepath)
+
+ def test_setup_py_multiline_string(self):
+ filepath = os.path.join(os.path.dirname(__file__), 'detection/syntax_error/setup_multiline_string.py')
+ from_setup_py(filepath)
+
+ def test_regular_indentation(self):
+ filepath = os.path.join(os.path.dirname(__file__), 'detection/syntax_error/regular_indentation.py')
+ from_setup_py(filepath)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tests/test_parsing.py new/requirements-detector-0.6/tests/test_parsing.py
--- old/requirements-detector-0.4/tests/test_parsing.py 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/test_parsing.py 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,80 @@
+
+try:
+ import urlparse
+except ImportError:
+ # python3
+ from urllib import parse as urlparse
+
+from unittest import TestCase
+from requirements_detector.requirement import DetectedRequirement, _parse_egg_name, _strip_fragment
+
+
+class TestRequirementParsing(TestCase):
+
+ def _test(self, requirement, name=None, version_specs=None, url=None):
+ req = DetectedRequirement.parse(requirement)
+ self.assertEqual(name, req.name)
+ if version_specs is None:
+ self.assertEqual([], req.version_specs)
+ else:
+ for spec in version_specs:
+ self.assertTrue(spec in req.version_specs)
+ self.assertEqual(url, req.url)
+
+ def test_basic_requirement(self):
+ self._test('Django', 'django')
+ self._test('celery', 'celery')
+
+ def test_requirement_with_versions(self):
+ self._test('Django==1.5.2', 'django', [('==', '1.5.2')])
+ self._test('South>0.8', 'south', [('>', '0.8')])
+ self._test('django-gubbins!=1.1.1,>1.1', 'django-gubbins', [('!=', '1.1.1'), ('>', '1.1')])
+
+ def test_relative_file_path(self):
+ self._test('../somelib', url='../somelib')
+
+ def test_vcs_url(self):
+ self._test('git+ssh://git@github.com/something/somelib.git',
+ url='git+ssh://git@github.com/something/somelib.git')
+ self._test('git+ssh://git@github.com/something/somelib.git#egg=somelib',
+ name='somelib', url='git+ssh://git@github.com/something/somelib.git')
+ self._test('git://github.com/peeb/django-mollie-ideal.git#egg=mollie',
+ name='mollie', url='git+git://github.com/peeb/django-mollie-ideal.git')
+
+ def test_archive_url(self):
+ self._test('http://example.com/somelib.tar.gz', url='http://example.com/somelib.tar.gz')
+ self._test('http://example.com/somelib.tar.gz#egg=somelib', name='somelib',
+ url='http://example.com/somelib.tar.gz')
+
+ def test_editable_relative_path(self):
+ self._test('-e ../somelib', url='../somelib')
+
+ def test_editable_vcs_url(self):
+ self._test('--editable git+ssh://git@github.com/something/somelib.git#egg=somelib',
+ name='somelib', url='git+ssh://git@github.com/something/somelib.git')
+
+
+class TestEggFragmentParsing(TestCase):
+
+ def test_simple(self):
+ self.assertEqual('somelib', _parse_egg_name('egg=somelib'))
+
+ def test_no_egg_value(self):
+ self.assertTrue(_parse_egg_name('a=b&c=2') is None)
+
+ def test_no_pairs(self):
+ self.assertTrue(_parse_egg_name('somelib') is None)
+
+ def test_first_egg_val(self):
+ self.assertEqual('somelib', _parse_egg_name('egg=somelib&egg=anotherlib'))
+
+ def test_multiple_fragment_values(self):
+ self.assertEqual('somelib', _parse_egg_name('a=1&egg=somelib&b=2'))
+
+
+class TestFragmentStripping(TestCase):
+
+ def test_stripping(self):
+ url = 'http://example.com/index.html?a=b&c=2#some_fragment'
+ parts = urlparse.urlparse(url)
+ self.assertEqual('http://example.com/index.html?a=b&c=2', _strip_fragment(parts))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requirements-detector-0.4/tox.ini new/requirements-detector-0.6/tox.ini
--- old/requirements-detector-0.4/tox.ini 1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tox.ini 2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,6 @@
+[tox]
+envlist = py26,py27,py33,py34,py35
+
+[testenv]
+deps=nose
+commands=nosetests -s
1
0
Hello community,
here is the log from the commit of package ceph-iscsi for openSUSE:Factory checked in at 2019-05-22 11:17:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ceph-iscsi (Old)
and /work/SRC/openSUSE:Factory/.ceph-iscsi.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ceph-iscsi"
Wed May 22 11:17:44 2019 rev:12 rq:704540 version:3.0+1558465738.g6a0a021
Changes:
--------
--- /work/SRC/openSUSE:Factory/ceph-iscsi/ceph-iscsi.changes 2019-05-10 09:20:01.400495426 +0200
+++ /work/SRC/openSUSE:Factory/.ceph-iscsi.new.5148/ceph-iscsi.changes 2019-05-22 11:17:46.154461201 +0200
@@ -1,0 +2,13 @@
+Tue May 21 19:09:22 UTC 2019 - Nathan Cutler <ncutler(a)suse.com>
+
+- Update to 3.0+1558465738.g6a0a021:
+ + If fqdn is enabled, "getfqdn" should be used instead of "gethostname"
+
+-------------------------------------------------------------------
+Tue May 21 12:57:59 UTC 2019 - Nathan Cutler <ncutler(a)suse.com>
+
+- Update to 3.0+1558443949.g9784103:
+ + rbd-target-gw/api systemd dep fix
+ + Add support for enabling FQDN
+
+-------------------------------------------------------------------
Old:
----
ceph-iscsi-3.0+1557415271.g940ac86.tar.gz
New:
----
ceph-iscsi-3.0+1558465738.g6a0a021.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ceph-iscsi.spec ++++++
--- /var/tmp/diff_new_pack.7ry1CX/_old 2019-05-22 11:17:47.746460709 +0200
+++ /var/tmp/diff_new_pack.7ry1CX/_new 2019-05-22 11:17:47.754460706 +0200
@@ -20,7 +20,7 @@
Name: ceph-iscsi
-Version: 3.0+1557415271.g940ac86
+Version: 3.0+1558465738.g6a0a021
Release: 1%{?dist}
Group: System/Filesystems
Summary: Python modules for Ceph iSCSI gateway configuration management
++++++ ceph-iscsi-3.0+1557415271.g940ac86.tar.gz -> ceph-iscsi-3.0+1558465738.g6a0a021.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceph-iscsi-3.0+1557415271.g940ac86/ceph-iscsi.spec new/ceph-iscsi-3.0+1558465738.g6a0a021/ceph-iscsi.spec
--- old/ceph-iscsi-3.0+1557415271.g940ac86/ceph-iscsi.spec 2019-05-09 17:21:11.431632500 +0200
+++ new/ceph-iscsi-3.0+1558465738.g6a0a021/ceph-iscsi.spec 2019-05-21 21:08:58.372570734 +0200
@@ -20,7 +20,7 @@
Name: ceph-iscsi
-Version: 3.0+1557415271.g940ac86
+Version: 3.0+1558465738.g6a0a021
Release: 1%{?dist}
Group: System/Filesystems
Summary: Python modules for Ceph iSCSI gateway configuration management
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceph-iscsi-3.0+1557415271.g940ac86/ceph_iscsi_config/client.py new/ceph-iscsi-3.0+1558465738.g6a0a021/ceph_iscsi_config/client.py
--- old/ceph-iscsi-3.0+1557415271.g940ac86/ceph_iscsi_config/client.py 2019-05-09 17:21:11.195630881 +0200
+++ new/ceph-iscsi-3.0+1558465738.g6a0a021/ceph_iscsi_config/client.py 2019-05-21 21:08:58.136569104 +0200
@@ -6,7 +6,6 @@
import rtslib_fb.root as lio_root
-from socket import gethostname
from rtslib_fb.target import NodeACL, Target, TPG
from rtslib_fb.fabric import ISCSIFabricModule
from rtslib_fb.utils import RTSLibError, RTSLibNotInCFS, normalize_wwn
@@ -14,7 +13,7 @@
import ceph_iscsi_config.settings as settings
from ceph_iscsi_config.common import Config
-from ceph_iscsi_config.utils import encryption_available, CephiSCSIError
+from ceph_iscsi_config.utils import encryption_available, CephiSCSIError, this_host
from ceph_iscsi_config.gateway_object import GWObject
@@ -639,7 +638,7 @@
if self.commit_enabled:
- if update_host == gethostname().split('.')[0]:
+ if update_host == this_host():
# update the config object with this clients settings
self.logger.debug("Updating config object metadata "
"for '{}'".format(self.iqn))
@@ -666,7 +665,7 @@
else:
# remove this client from the config
- if update_host == gethostname().split('.')[0]:
+ if update_host == this_host():
self.logger.debug("Removing {} from the config "
"object".format(self.iqn))
target_config['clients'].pop(self.iqn)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceph-iscsi-3.0+1557415271.g940ac86/ceph_iscsi_config/lun.py new/ceph-iscsi-3.0+1558465738.g6a0a021/ceph_iscsi_config/lun.py
--- old/ceph-iscsi-3.0+1557415271.g940ac86/ceph_iscsi_config/lun.py 2019-05-09 17:21:11.195630881 +0200
+++ new/ceph-iscsi-3.0+1558465738.g6a0a021/ceph_iscsi_config/lun.py 2019-05-21 21:08:58.136569104 +0200
@@ -6,7 +6,6 @@
import subprocess
from time import sleep
-from socket import gethostname
from rtslib_fb import UserBackedStorageObject, RBDStorageObject, root
from rtslib_fb.utils import RTSLibError
@@ -348,9 +347,9 @@
self.size_bytes = convert_2_bytes(size)
self.config_key = '{}/{}'.format(self.pool, self.image)
- # the allocating host could be fqdn or shortname - but the config
- # only uses shortname so it needs to be converted to shortname format
- self.allocating_host = allocating_host.split('.')[0]
+ # the allocating host could be fqdn or shortname
+ fqdn_enabled = settings.config.fqdn_enabled
+ self.allocating_host = allocating_host if fqdn_enabled else allocating_host.split('.')[0]
self.backstore = backstore
self.backstore_object_name = backstore_object_name
@@ -378,7 +377,7 @@
"continue".format(self.pool))
def remove_lun(self, preserve_image):
- this_host = gethostname().split('.')[0]
+ local_gw = this_host()
self.logger.info("LUN deletion request received, rbd removal to be "
"performed by {}".format(self.allocating_host))
@@ -405,7 +404,7 @@
rbd_image = RBDDev(self.image, '0G', self.backstore, self.pool)
- if this_host == self.allocating_host:
+ if local_gw == self.allocating_host:
# by using the allocating host we ensure the delete is not
# issue by several hosts when initiated through ansible
if not preserve_image:
@@ -421,7 +420,7 @@
self.config.commit()
def unmap_lun(self, target_iqn):
- this_host = gethostname().split('.')[0]
+ local_gw = this_host()
self.logger.info("LUN unmap request received, config commit to be "
"performed by {}".format(self.allocating_host))
@@ -450,7 +449,7 @@
if self.error:
return
- if this_host == self.allocating_host:
+ if local_gw == self.allocating_host:
# by using the allocating host we ensure the delete is not
# issue by several hosts when initiated through ansible
@@ -627,9 +626,9 @@
self.logger.debug("rados pool '{}' contains the following - "
"{}".format(self.pool, disk_list))
- this_host = gethostname().split('.')[0]
+ local_gw = this_host()
self.logger.debug("Hostname Check - this host is {}, target host for "
- "allocations is {}".format(this_host,
+ "allocations is {}".format(local_gw,
self.allocating_host))
rbd_image = RBDDev(self.image, self.size_bytes, self.backstore, self.pool)
@@ -638,7 +637,7 @@
# if the image required isn't defined, create it!
if self.image not in disk_list:
# create the requested disk if this is the 'owning' host
- if this_host == self.allocating_host:
+ if local_gw == self.allocating_host:
rbd_image.create()
@@ -689,7 +688,7 @@
# if updates_made is not set, the disk pre-exists so on the owning
# host see if it needs to be resized
- if self.num_changes == 0 and this_host == self.allocating_host:
+ if self.num_changes == 0 and local_gw == self.allocating_host:
# check the size, and update if needed
rbd_image.rbd_size()
@@ -717,7 +716,7 @@
# this image has not been defined to this hosts LIO, so check the
# config for the details and if it's missing define the
# wwn/alua_state and update the config
- if this_host == self.allocating_host:
+ if local_gw == self.allocating_host:
# first check to see if the device needs adding
try:
wwn = self.config.config['disks'][self.config_key]['wwn']
@@ -824,7 +823,7 @@
# the owning host for an image is the only host that commits to the
# config
- if this_host == self.allocating_host and self.config.changed:
+ if local_gw == self.allocating_host and self.config.changed:
self.logger.debug("(LUN.allocate) Committing change(s) to the "
"config object in pool {}".format(self.pool))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceph-iscsi-3.0+1557415271.g940ac86/ceph_iscsi_config/settings.py new/ceph-iscsi-3.0+1558465738.g6a0a021/ceph_iscsi_config/settings.py
--- old/ceph-iscsi-3.0+1557415271.g940ac86/ceph_iscsi_config/settings.py 2019-05-09 17:21:11.199630908 +0200
+++ new/ceph-iscsi-3.0+1558465738.g6a0a021/ceph_iscsi_config/settings.py 2019-05-21 21:08:58.136569104 +0200
@@ -115,7 +115,8 @@
"prometheus_exporter": "true",
"prometheus_port": 9287,
"prometheus_host": "::",
- "logger_level": logging.DEBUG
+ "logger_level": logging.DEBUG,
+ "fqdn_enabled": "false"
}
target_defaults = {"osd_op_timeout": 30,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceph-iscsi-3.0+1557415271.g940ac86/ceph_iscsi_config/utils.py new/ceph-iscsi-3.0+1558465738.g6a0a021/ceph_iscsi_config/utils.py
--- old/ceph-iscsi-3.0+1557415271.g940ac86/ceph_iscsi_config/utils.py 2019-05-09 17:21:11.199630908 +0200
+++ new/ceph-iscsi-3.0+1558465738.g6a0a021/ceph_iscsi_config/utils.py 2019-05-21 21:08:58.140569131 +0200
@@ -280,9 +280,10 @@
def this_host():
"""
- return the local machine's shortname
+ return the local machine's fqdn or shortname
"""
- return socket.gethostname().split('.')[0]
+ fqdn_enabled = settings.config.fqdn_enabled
+ return socket.getfqdn() if fqdn_enabled else socket.gethostname().split('.')[0]
def gen_file_hash(filename, hash_type='sha256'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceph-iscsi-3.0+1557415271.g940ac86/gwcli/gateway.py new/ceph-iscsi-3.0+1558465738.g6a0a021/gwcli/gateway.py
--- old/ceph-iscsi-3.0+1557415271.g940ac86/gwcli/gateway.py 2019-05-09 17:21:11.199630908 +0200
+++ new/ceph-iscsi-3.0+1558465738.g6a0a021/gwcli/gateway.py 2019-05-21 21:08:58.140569131 +0200
@@ -752,10 +752,13 @@
gateway_name,
settings.config.api_port))
+ api = APIRequest('{}/sysinfo/hostname'.format(new_gw_endpoint))
+ api.get()
+ gateway_hostname = api.response.json()['data']
config = self.parent.parent.parent._get_config(endpoint=new_gw_endpoint)
target_config = config['targets'][target_iqn]
- portal_config = target_config['portals'][gateway_name]
- Gateway(self, gateway_name, portal_config)
+ portal_config = target_config['portals'][gateway_hostname]
+ Gateway(self, gateway_hostname, portal_config)
self.logger.info('ok')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceph-iscsi-3.0+1557415271.g940ac86/gwcli/utils.py new/ceph-iscsi-3.0+1558465738.g6a0a021/gwcli/utils.py
--- old/ceph-iscsi-3.0+1557415271.g940ac86/gwcli/utils.py 2019-05-09 17:21:11.199630908 +0200
+++ new/ceph-iscsi-3.0+1558465738.g6a0a021/gwcli/utils.py 2019-05-21 21:08:58.140569131 +0200
@@ -33,9 +33,10 @@
def this_host():
"""
- return the local machine's shortname
+ return the local machine's fqdn or shortname
"""
- return socket.gethostname().split('.')[0]
+ fqdn_enabled = settings.config.fqdn_enabled
+ return socket.getfqdn() if fqdn_enabled else socket.gethostname().split('.')[0]
def get_config():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceph-iscsi-3.0+1557415271.g940ac86/usr/lib/systemd/system/rbd-target-api.service new/ceph-iscsi-3.0+1558465738.g6a0a021/usr/lib/systemd/system/rbd-target-api.service
--- old/ceph-iscsi-3.0+1557415271.g940ac86/usr/lib/systemd/system/rbd-target-api.service 2019-05-09 17:21:11.199630908 +0200
+++ new/ceph-iscsi-3.0+1558465738.g6a0a021/usr/lib/systemd/system/rbd-target-api.service 2019-05-21 21:08:58.140569131 +0200
@@ -3,7 +3,7 @@
Requires=sys-kernel-config.mount
After=sys-kernel-config.mount network-online.target tcmu-runner.service
-Wants=network-online.target rbd-target-gw.service tcmu-runner.service
+Wants=network-online.target tcmu-runner.service
[Service]
LimitNOFILE=1048576
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ceph-iscsi-3.0+1557415271.g940ac86/usr/lib/systemd/system/rbd-target-gw.service new/ceph-iscsi-3.0+1558465738.g6a0a021/usr/lib/systemd/system/rbd-target-gw.service
--- old/ceph-iscsi-3.0+1557415271.g940ac86/usr/lib/systemd/system/rbd-target-gw.service 2019-05-09 17:21:11.199630908 +0200
+++ new/ceph-iscsi-3.0+1558465738.g6a0a021/usr/lib/systemd/system/rbd-target-gw.service 2019-05-21 21:08:58.140569131 +0200
@@ -4,7 +4,6 @@
Requires=sys-kernel-config.mount
After=sys-kernel-config.mount network-online.target rbd-target-api.service
Wants=network-online.target
-BindsTo=rbd-target-api.service
[Service]
LimitNOFILE=1048576
1
0
Hello community,
here is the log from the commit of package python-flake8-quotes for openSUSE:Factory checked in at 2019-05-22 11:17:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-flake8-quotes (Old)
and /work/SRC/openSUSE:Factory/.python-flake8-quotes.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-flake8-quotes"
Wed May 22 11:17:38 2019 rev:3 rq:704521 version:2.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-flake8-quotes/python-flake8-quotes.changes 2018-12-13 19:44:45.816987656 +0100
+++ /work/SRC/openSUSE:Factory/.python-flake8-quotes.new.5148/python-flake8-quotes.changes 2019-05-22 11:17:43.946461882 +0200
@@ -1,0 +2,9 @@
+Tue May 21 11:52:58 UTC 2019 - Marketa Calabkova <mcalabkova(a)suse.com>
+
+- Update to version 2.0.1
+ * We automatically encourage avoiding escaping quotes as per
+ PEP 8. To disable this, use --no-avoid-escape (can be used
+ in configuration file via avoid-escape).
+ * Add note about warning.
+
+-------------------------------------------------------------------
Old:
----
flake8-quotes-1.0.0.tar.gz
New:
----
flake8-quotes-2.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-flake8-quotes.spec ++++++
--- /var/tmp/diff_new_pack.PeZIsr/_old 2019-05-22 11:17:44.778461626 +0200
+++ /var/tmp/diff_new_pack.PeZIsr/_new 2019-05-22 11:17:44.778461626 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-flake8-quotes
#
-# Copyright (c) 2018 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
@@ -17,25 +17,24 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-# Tests require access to stdin
-%bcond_with test
+%bcond_without test
Name: python-flake8-quotes
-Version: 1.0.0
+Version: 2.0.1
Release: 0
Summary: Flake8 lint for quotes
License: MIT
Group: Development/Languages/Python
-Url: http://github.com/zheller/flake8-quotes/
+URL: http://github.com/zheller/flake8-quotes/
Source: https://files.pythonhosted.org/packages/source/f/flake8-quotes/flake8-quote…
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
+Requires: python-flake8 >= 3.3.0
+BuildArch: noarch
%if %{with test}
-BuildRequires: %{python_module flake8}
+BuildRequires: %{python_module flake8 >= 3.3.0}
+BuildRequires: %{python_module pytest}
%endif
-Requires: python-flake8
-BuildArch: noarch
-
%python_subpackages
%description
@@ -53,11 +52,11 @@
%if %{with test}
%check
-%python_exec setup.py test
+# Tests require access to stdin
+%pytest -s -k "not test_stdin" test
%endif
%files %{python_files}
-%defattr(-,root,root,-)
%doc README.rst
%license LICENSE
%{python_sitelib}/*
++++++ flake8-quotes-1.0.0.tar.gz -> flake8-quotes-2.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/PKG-INFO new/flake8-quotes-2.0.1/PKG-INFO
--- old/flake8-quotes-1.0.0/PKG-INFO 2018-04-08 22:31:39.000000000 +0200
+++ new/flake8-quotes-2.0.1/PKG-INFO 2019-04-24 09:49:37.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: flake8-quotes
-Version: 1.0.0
+Version: 2.0.1
Summary: Flake8 lint for quotes.
Home-page: http://github.com/zheller/flake8-quotes/
Author: Zachary Wright Heller
@@ -13,6 +13,10 @@
:target: https://travis-ci.org/zheller/flake8-quotes
:alt: Build Status
+ Major update in 2.0.0
+ ---------------------
+ We automatically encourage avoiding escaping quotes as per `PEP 8 <https://www.python.org/dev/peps/pep-0008/#string-quotes>`_. To disable this, use ``--no-avoid-escape`` (can be used in configuration file via ``avoid-escape``).
+
Deprecation notice in 0.3.0
---------------------------
To anticipate multiline support, we are renaming ``--quotes`` to ``--inline-quotes``. Please adjust your configurations appropriately.
@@ -29,6 +33,17 @@
Now you don't need to worry about people like @sectioneight constantly
complaining that you are using double-quotes and not single-quotes.
+ Warnings
+ --------
+
+ This package adds one flake8 warning ```Q0```.
+ You might want to enable this warning inside `flake8` configuration file.
+ Typically that will be `.flake8` inside the root folder of your project.
+
+ .. code:: ini
+
+ select = Q0
+
Configuration
-------------
@@ -49,6 +64,8 @@
# flake8 --inline-quotes '"' --docstring-quotes "'"
# flake8 --inline-quotes '"' --docstring-quotes "'''"
+ # We also support disabling escaping quotes
+ # flake8 --no-avoid-escape
or configuration option in `tox.ini`/`setup.cfg`.
@@ -66,6 +83,9 @@
# We also support docstring quotes similarly
# docstring-quotes = '
# docstring-quotes = '''
+ #
+ # We also support disabling escaping quotes
+ # avoid-escape = False
Caveats
-------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/README.rst new/flake8-quotes-2.0.1/README.rst
--- old/flake8-quotes-1.0.0/README.rst 2018-04-08 22:29:39.000000000 +0200
+++ new/flake8-quotes-2.0.1/README.rst 2019-04-17 01:48:28.000000000 +0200
@@ -5,6 +5,10 @@
:target: https://travis-ci.org/zheller/flake8-quotes
:alt: Build Status
+Major update in 2.0.0
+---------------------
+We automatically encourage avoiding escaping quotes as per `PEP 8 <https://www.python.org/dev/peps/pep-0008/#string-quotes>`_. To disable this, use ``--no-avoid-escape`` (can be used in configuration file via ``avoid-escape``).
+
Deprecation notice in 0.3.0
---------------------------
To anticipate multiline support, we are renaming ``--quotes`` to ``--inline-quotes``. Please adjust your configurations appropriately.
@@ -21,6 +25,17 @@
Now you don't need to worry about people like @sectioneight constantly
complaining that you are using double-quotes and not single-quotes.
+Warnings
+--------
+
+This package adds one flake8 warning ```Q0```.
+You might want to enable this warning inside `flake8` configuration file.
+Typically that will be `.flake8` inside the root folder of your project.
+
+.. code:: ini
+
+ select = Q0
+
Configuration
-------------
@@ -41,6 +56,8 @@
# flake8 --inline-quotes '"' --docstring-quotes "'"
# flake8 --inline-quotes '"' --docstring-quotes "'''"
+ # We also support disabling escaping quotes
+ # flake8 --no-avoid-escape
or configuration option in `tox.ini`/`setup.cfg`.
@@ -58,6 +75,9 @@
# We also support docstring quotes similarly
# docstring-quotes = '
# docstring-quotes = '''
+ #
+ # We also support disabling escaping quotes
+ # avoid-escape = False
Caveats
-------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/flake8_quotes/__about__.py new/flake8-quotes-2.0.1/flake8_quotes/__about__.py
--- old/flake8-quotes-1.0.0/flake8_quotes/__about__.py 2018-04-08 22:31:22.000000000 +0200
+++ new/flake8-quotes-2.0.1/flake8_quotes/__about__.py 2019-04-24 09:49:26.000000000 +0200
@@ -1 +1 @@
-__version__ = '1.0.0'
+__version__ = '2.0.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/flake8_quotes/__init__.py new/flake8-quotes-2.0.1/flake8_quotes/__init__.py
--- old/flake8-quotes-1.0.0/flake8_quotes/__init__.py 2018-04-08 22:30:48.000000000 +0200
+++ new/flake8-quotes-2.0.1/flake8_quotes/__init__.py 2019-04-24 09:48:43.000000000 +0200
@@ -113,6 +113,12 @@
parse_from_config=True, type='choice',
choices=sorted(cls.DOCSTRING_QUOTES.keys()),
help='Quote to expect in all files (default: """)')
+ cls._register_opt(parser, '--avoid-escape', default=None, action='store_true',
+ parse_from_config=True,
+ help='Avoiding escaping same quotes in inline strings (enabled by default)')
+ cls._register_opt(parser, '--no-avoid-escape', dest='avoid_escape', default=None, action='store_false',
+ parse_from_config=False,
+ help='Disable avoiding escaping same quotes in inline strings')
@classmethod
def parse_options(cls, options):
@@ -145,6 +151,12 @@
if hasattr(options, 'docstring_quotes') and options.docstring_quotes is not None:
cls.config.update(cls.DOCSTRING_QUOTES[options.docstring_quotes])
+ # If avoid escaped specified, add to config
+ if hasattr(options, 'avoid_escape') and options.avoid_escape is not None:
+ cls.config.update({'avoid_escape': options.avoid_escape})
+ else:
+ cls.config.update({'avoid_escape': True})
+
def get_file_contents(self):
if self.filename in ('stdin', '-', None):
return stdin_get_value().splitlines(True)
@@ -185,6 +197,7 @@
# `b"""foo"""` -> `"""foo"""`
last_quote_char = token.string[-1]
first_quote_index = token.string.index(last_quote_char)
+ prefix = token.string[:first_quote_index].lower()
unprefixed_string = token.string[first_quote_index:]
# Determine if our string is multiline-based
@@ -223,19 +236,38 @@
}
# Otherwise (string is inline quote)
else:
- # If our string is a known good string, then ignore it
- # (')foo' -> good (continue)
- # "it(')s" -> good (continue)
- # (")foo" -> possibly bad
- if self.config['good_single'] in unprefixed_string:
+ # 'This is a string' -> Good
+ # 'This is a "string"' -> Good
+ # 'This is a \"string\"' -> Good
+ # 'This is a \'string\'' -> Bad (Q003) Escaped inner quotes
+ # '"This" is a \'string\'' -> Good Changing outer quotes would not avoid escaping
+ # "This is a string" -> Bad (Q000)
+ # "This is a 'string'" -> Good Avoids escaped inner quotes
+ # "This is a \"string\"" -> Bad (Q000)
+ # "\"This\" is a 'string'" -> Good
+
+ string_contents = unprefixed_string[1:-1]
+
+ # If string preferred type, check for escapes
+ if last_quote_char == self.config['good_single']:
+ if not self.config['avoid_escape'] or 'r' in prefix:
+ continue
+ if self.config['good_single'] in string_contents and not self.config['bad_single'] in string_contents:
+ yield {
+ 'message': 'Q003 Change outer quotes to avoid escaping inner quotes',
+ 'line': start_row,
+ 'col': start_col,
+ }
continue
-
- # Output our error
- yield {
- 'message': 'Q000 Remove bad quotes',
- 'line': start_row,
- 'col': start_col,
- }
+
+ # If not preferred type, only allow use to avoid escapes.
+ if not self.config['good_single'] in string_contents:
+ yield {
+ 'message': 'Q000 Remove bad quotes',
+ 'line': start_row,
+ 'col': start_col,
+ }
+
class Token:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/flake8_quotes.egg-info/PKG-INFO new/flake8-quotes-2.0.1/flake8_quotes.egg-info/PKG-INFO
--- old/flake8-quotes-1.0.0/flake8_quotes.egg-info/PKG-INFO 2018-04-08 22:31:39.000000000 +0200
+++ new/flake8-quotes-2.0.1/flake8_quotes.egg-info/PKG-INFO 2019-04-24 09:49:37.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: flake8-quotes
-Version: 1.0.0
+Version: 2.0.1
Summary: Flake8 lint for quotes.
Home-page: http://github.com/zheller/flake8-quotes/
Author: Zachary Wright Heller
@@ -13,6 +13,10 @@
:target: https://travis-ci.org/zheller/flake8-quotes
:alt: Build Status
+ Major update in 2.0.0
+ ---------------------
+ We automatically encourage avoiding escaping quotes as per `PEP 8 <https://www.python.org/dev/peps/pep-0008/#string-quotes>`_. To disable this, use ``--no-avoid-escape`` (can be used in configuration file via ``avoid-escape``).
+
Deprecation notice in 0.3.0
---------------------------
To anticipate multiline support, we are renaming ``--quotes`` to ``--inline-quotes``. Please adjust your configurations appropriately.
@@ -29,6 +33,17 @@
Now you don't need to worry about people like @sectioneight constantly
complaining that you are using double-quotes and not single-quotes.
+ Warnings
+ --------
+
+ This package adds one flake8 warning ```Q0```.
+ You might want to enable this warning inside `flake8` configuration file.
+ Typically that will be `.flake8` inside the root folder of your project.
+
+ .. code:: ini
+
+ select = Q0
+
Configuration
-------------
@@ -49,6 +64,8 @@
# flake8 --inline-quotes '"' --docstring-quotes "'"
# flake8 --inline-quotes '"' --docstring-quotes "'''"
+ # We also support disabling escaping quotes
+ # flake8 --no-avoid-escape
or configuration option in `tox.ini`/`setup.cfg`.
@@ -66,6 +83,9 @@
# We also support docstring quotes similarly
# docstring-quotes = '
# docstring-quotes = '''
+ #
+ # We also support disabling escaping quotes
+ # avoid-escape = False
Caveats
-------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/flake8_quotes.egg-info/SOURCES.txt new/flake8-quotes-2.0.1/flake8_quotes.egg-info/SOURCES.txt
--- old/flake8-quotes-1.0.0/flake8_quotes.egg-info/SOURCES.txt 2018-04-08 22:31:39.000000000 +0200
+++ new/flake8-quotes-2.0.1/flake8_quotes.egg-info/SOURCES.txt 2019-04-24 09:49:37.000000000 +0200
@@ -10,7 +10,6 @@
flake8_quotes.egg-info/SOURCES.txt
flake8_quotes.egg-info/dependency_links.txt
flake8_quotes.egg-info/entry_points.txt
-flake8_quotes.egg-info/pbr.json
flake8_quotes.egg-info/requires.txt
flake8_quotes.egg-info/top_level.txt
flake8_quotes.egg-info/zip-safe
@@ -30,12 +29,14 @@
test/data/docstring_singles_module_multiline.py
test/data/docstring_singles_module_singleline.py
test/data/doubles.py
+test/data/doubles_escaped.py
test/data/doubles_multiline_string.py
test/data/doubles_noqa.py
test/data/doubles_wrapped.py
test/data/multiline_string.py
test/data/no_qa.py
test/data/singles.py
+test/data/singles_escaped.py
test/data/singles_multiline_string.py
test/data/singles_noqa.py
test/data/singles_wrapped.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/flake8_quotes.egg-info/pbr.json new/flake8-quotes-2.0.1/flake8_quotes.egg-info/pbr.json
--- old/flake8-quotes-1.0.0/flake8_quotes.egg-info/pbr.json 2018-04-08 22:31:39.000000000 +0200
+++ new/flake8-quotes-2.0.1/flake8_quotes.egg-info/pbr.json 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-{"is_release": false, "git_version": "34b98e9"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/setup.cfg new/flake8-quotes-2.0.1/setup.cfg
--- old/flake8-quotes-1.0.0/setup.cfg 2018-04-08 22:31:39.000000000 +0200
+++ new/flake8-quotes-2.0.1/setup.cfg 2019-04-24 09:49:37.000000000 +0200
@@ -5,5 +5,4 @@
[egg_info]
tag_build =
tag_date = 0
-tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/test/data/doubles_escaped.py new/flake8-quotes-2.0.1/test/data/doubles_escaped.py
--- old/flake8-quotes-1.0.0/test/data/doubles_escaped.py 1970-01-01 01:00:00.000000000 +0100
+++ new/flake8-quotes-2.0.1/test/data/doubles_escaped.py 2019-04-24 09:48:43.000000000 +0200
@@ -0,0 +1,6 @@
+this_should_raise_Q003 = 'This is a \'string\''
+this_is_fine = '"This" is a \'string\''
+this_is_fine = "This is a 'string'"
+this_is_fine = "\"This\" is a 'string'"
+this_is_fine = r'This is a \'string\''
+this_is_fine = br'This is a \'string\''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/test/data/singles_escaped.py new/flake8-quotes-2.0.1/test/data/singles_escaped.py
--- old/flake8-quotes-1.0.0/test/data/singles_escaped.py 1970-01-01 01:00:00.000000000 +0100
+++ new/flake8-quotes-2.0.1/test/data/singles_escaped.py 2019-04-24 09:48:43.000000000 +0200
@@ -0,0 +1,6 @@
+this_should_raise_Q003 = "This is a \"string\""
+this_is_fine = "'This' is a \"string\""
+this_is_fine = 'This is a "string"'
+this_is_fine = '\'This\' is a "string"'
+this_is_fine = r"This is a \"string\""
+this_is_fine = br"This is a \"string\""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/test/test_checks.py new/flake8-quotes-2.0.1/test/test_checks.py
--- old/flake8-quotes-1.0.0/test/test_checks.py 2018-04-08 22:28:05.000000000 +0200
+++ new/flake8-quotes-2.0.1/test/test_checks.py 2019-04-17 01:41:34.000000000 +0200
@@ -30,8 +30,8 @@
class DoublesTestChecks(TestCase):
def setUp(self):
class DoublesOptions():
- inline_quotes = '\''
- multiline_quotes = '\''
+ inline_quotes = "'"
+ multiline_quotes = "'"
QuoteChecker.parse_options(DoublesOptions)
def test_multiline_string(self):
@@ -56,6 +56,21 @@
checker = QuoteChecker(None, get_absolute_path('data/doubles_noqa.py'))
self.assertEqual(list(checker.run()), [])
+ def test_escapes(self):
+ doubles_checker = QuoteChecker(None, filename=get_absolute_path('data/doubles_escaped.py'))
+ self.assertEqual(list(doubles_checker.get_quotes_errors(doubles_checker.get_file_contents())), [
+ {'col': 25, 'line': 1, 'message': 'Q003 Change outer quotes to avoid escaping inner quotes'},
+ ])
+
+ def test_escapes_allowed(self):
+ class Options():
+ inline_quotes = "'"
+ avoid_escape = False
+ QuoteChecker.parse_options(Options)
+
+ doubles_checker = QuoteChecker(None, filename=get_absolute_path('data/doubles_escaped.py'))
+ self.assertEqual(list(doubles_checker.get_quotes_errors(doubles_checker.get_file_contents())), [])
+
class DoublesAliasTestChecks(TestCase):
def setUp(self):
@@ -105,6 +120,21 @@
checker = QuoteChecker(None, get_absolute_path('data/singles_noqa.py'))
self.assertEqual(list(checker.run()), [])
+ def test_escapes(self):
+ singles_checker = QuoteChecker(None, filename=get_absolute_path('data/singles_escaped.py'))
+ self.assertEqual(list(singles_checker.get_quotes_errors(singles_checker.get_file_contents())), [
+ {'col': 25, 'line': 1, 'message': 'Q003 Change outer quotes to avoid escaping inner quotes'},
+ ])
+
+ def test_escapes_allowed(self):
+ class Options():
+ inline_quotes = '"'
+ avoid_escape = False
+ QuoteChecker.parse_options(Options)
+
+ singles_checker = QuoteChecker(None, filename=get_absolute_path('data/singles_escaped.py'))
+ self.assertEqual(list(singles_checker.get_quotes_errors(singles_checker.get_file_contents())), [])
+
class SinglesAliasTestChecks(TestCase):
def setUp(self):
@@ -128,7 +158,7 @@
class MultilineTestChecks(TestCase):
def test_singles(self):
class Options():
- inline_quotes = '\''
+ inline_quotes = "'"
multiline_quotes = '"'
QuoteChecker.parse_options(Options)
@@ -151,7 +181,7 @@
def test_doubles(self):
class Options():
inline_quotes = '"'
- multiline_quotes = '\''
+ multiline_quotes = "'"
QuoteChecker.parse_options(Options)
multiline_checker = QuoteChecker(None, filename=get_absolute_path('data/multiline_string.py'))
1
0
Hello community,
here is the log from the commit of package python-identify for openSUSE:Factory checked in at 2019-05-22 11:17:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-identify (Old)
and /work/SRC/openSUSE:Factory/.python-identify.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-identify"
Wed May 22 11:17:32 2019 rev:3 rq:704520 version:1.4.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-identify/python-identify.changes 2019-05-07 23:20:15.173091494 +0200
+++ /work/SRC/openSUSE:Factory/.python-identify.new.5148/python-identify.changes 2019-05-22 11:17:38.746463487 +0200
@@ -1,0 +2,6 @@
+Tue May 21 12:44:45 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 1.4.3
+ * no upstream changelog
+
+-------------------------------------------------------------------
Old:
----
identify-1.4.2.tar.gz
New:
----
identify-1.4.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-identify.spec ++++++
--- /var/tmp/diff_new_pack.BEK0ny/_old 2019-05-22 11:17:40.238463027 +0200
+++ /var/tmp/diff_new_pack.BEK0ny/_new 2019-05-22 11:17:40.242463025 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-identify
-Version: 1.4.2
+Version: 1.4.3
Release: 0
Summary: File identification library for Python
License: MIT
++++++ identify-1.4.2.tar.gz -> identify-1.4.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/identify-1.4.2/identify/extensions.py new/identify-1.4.3/identify/extensions.py
--- old/identify-1.4.2/identify/extensions.py 2019-04-28 03:34:06.000000000 +0200
+++ new/identify-1.4.3/identify/extensions.py 2019-05-10 16:47:20.000000000 +0200
@@ -25,6 +25,7 @@
'css': {'text', 'css'},
'csv': {'text', 'csv'},
'cxx': {'text', 'c++'},
+ 'dart': {'text', 'dart'},
'def': {'text', 'def'},
'dtd': {'text', 'dtd'},
'ear': {'binary', 'zip', 'jar'},
@@ -160,6 +161,7 @@
'yang': {'text', 'yang'},
'yin': {'text', 'xml', 'yin'},
'yml': {'text', 'yaml'},
+ 'zig': {'text', 'zig'},
'zip': {'binary', 'zip'},
'zsh': {'text', 'shell', 'zsh'},
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/identify-1.4.2/setup.cfg new/identify-1.4.3/setup.cfg
--- old/identify-1.4.2/setup.cfg 2019-04-28 03:34:06.000000000 +0200
+++ new/identify-1.4.3/setup.cfg 2019-05-10 16:47:20.000000000 +0200
@@ -1,6 +1,6 @@
[metadata]
name = identify
-version = 1.4.2
+version = 1.4.3
description = File identification library for Python
long_description = file: README.md
long_description_content_type = text/markdown
1
0
Hello community,
here is the log from the commit of package rabbitmq-server for openSUSE:Factory checked in at 2019-05-22 11:17:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rabbitmq-server (Old)
and /work/SRC/openSUSE:Factory/.rabbitmq-server.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rabbitmq-server"
Wed May 22 11:17:27 2019 rev:46 rq:704519 version:3.7.15
Changes:
--------
--- /work/SRC/openSUSE:Factory/rabbitmq-server/rabbitmq-server.changes 2019-05-05 21:21:43.573327344 +0200
+++ /work/SRC/openSUSE:Factory/.rabbitmq-server.new.5148/rabbitmq-server.changes 2019-05-22 11:17:32.270467718 +0200
@@ -1,0 +2,9 @@
+Tue May 21 16:02:44 UTC 2019 - Gabriele Santomaggio <g.santomaggio(a)gmail.com>
+
+- Update to RabbitMQ version 3.7.15
+- Full release notes: https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.15
+- RabbitMQ 3.7.15 is a maintenance release. It focuses on bug fixes and
+ minor usability improvements. This release requires Erlang/OTP 20.3 or later.
+ It is also the first release to support Erlang 22.
+
+-------------------------------------------------------------------
@@ -11 +20 @@
-- RabbitMQ 3.7.13 is a maintenance release. It focuses on bug fixes and
+- RabbitMQ 3.7.14 is a maintenance release. It focuses on bug fixes and
Old:
----
rabbitmq-server-3.7.14.tar.xz
New:
----
rabbitmq-server-3.7.15.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rabbitmq-server.spec ++++++
--- /var/tmp/diff_new_pack.aHI5u3/_old 2019-05-22 11:17:33.250467033 +0200
+++ /var/tmp/diff_new_pack.aHI5u3/_new 2019-05-22 11:17:33.254467030 +0200
@@ -33,7 +33,7 @@
%define _make_args DESTDIR="%{buildroot}" PREFIX="%{_prefix}" RMQ_ROOTDIR=%{_rabbit_libdir} RMQ_ERLAPP_DIR=%{_rabbit_erllibdir} MAN_INSTALL_PATH="%{_mandir}" DOC_INSTALL_DIR=%{buildroot}/%{_docdir} VERSION=%{version} V=1
Name: rabbitmq-server
-Version: 3.7.14
+Version: 3.7.15
Release: 0
Summary: A message broker supporting AMQP, STOMP and MQTT
License: MPL-1.1
++++++ rabbitmq-server-3.7.14.tar.xz -> rabbitmq-server-3.7.15.tar.xz ++++++
++++ 14336 lines of diff (skipped)
1
0