openSUSE Commits
Threads by month
- ----- 2024 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2020
- 1 participants
- 4645 discussions
Hello community,
here is the log from the commit of package 000release-packages for openSUSE:Leap:15.2:PowerPC checked in at 2020-05-29 15:25:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2:PowerPC/000release-packages (Old)
and /work/SRC/openSUSE:Leap:15.2:PowerPC/.000release-packages.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000release-packages"
Fri May 29 15:25:03 2020 rev:240 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
openSUSE-release.spec: same change
stub.spec: same change
++++++ weakremovers.inc ++++++
--- /var/tmp/diff_new_pack.ATmdpC/_old 2020-05-29 15:25:04.788688243 +0200
+++ /var/tmp/diff_new_pack.ATmdpC/_new 2020-05-29 15:25:04.788688243 +0200
@@ -17300,6 +17300,8 @@
Provides: weakremover(rfb)
Provides: weakremover(rfbplaymacro)
Provides: weakremover(rfbproxy)
+Provides: weakremover(rfcat)
+Provides: weakremover(rfcat-udev)
Provides: weakremover(rgb)
Provides: weakremover(rhash)
Provides: weakremover(rhash-devel)
1
0
Hello community,
here is the log from the commit of package python-psycopg2 for openSUSE:Leap:15.2 checked in at 2020-05-29 15:16:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-psycopg2 (Old)
and /work/SRC/openSUSE:Leap:15.2/.python-psycopg2.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-psycopg2"
Fri May 29 15:16:28 2020 rev:23 rq:810156 version:2.8.5
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/python-psycopg2/python-psycopg2.changes 2020-01-15 15:51:42.603538294 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.python-psycopg2.new.3606/python-psycopg2.changes 2020-05-29 15:16:33.567152072 +0200
@@ -1,0 +2,111 @@
+Tue May 19 06:16:56 UTC 2020 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Sort out the syntax of the deps bsc#1171213
+
+-------------------------------------------------------------------
+Thu Apr 23 16:13:29 UTC 2020 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- update to 2.8.5
+ - Fixed use of connection_factory and cursor_factory together
+ (ticket #1019).
+ - Added support for logging.LoggerAdapter in LoggingConnection
+ (ticket #1026).
+ - Column objects in cursor.description can be sliced (ticket
+ #1034).
+ - Added AIX support (ticket #1061).
+ - Fixed copy() of DictCursor rows (ticket #1073).
+
+-------------------------------------------------------------------
+Thu Mar 19 08:19:57 UTC 2020 - Hans-Peter Jansen <hpj(a)urpla.net>
+
+- fix postgresql build dependency: pg_config is in postgresql-server-devel (bsc#1167541)
+
+-------------------------------------------------------------------
+Fri Feb 28 21:49:40 UTC 2020 - Dirk Mueller <dmueller(a)suse.com>
+
+- update to 2.8.4:
+ - Fixed building with Python 3.8 (:ticket:`#854`).
+ - Don't swallow keyboard interrupts on connect when a password is specified
+ in the connection string (:ticket:`#898`).
+ - Don't advance replication cursor when the message wasn't confirmed
+ (:ticket:`#940`).
+ - Fixed inclusion of ``time.h`` on linux (:ticket:`#951`).
+ - Fixed int overflow for large values in `~psycopg2.extensions.Column.table_oid`
+ and `~psycopg2.extensions.Column.type_code` (:ticket:`#961`).
+ - `~psycopg2.errorcodes` map and `~psycopg2.errors` classes updated to
+ PostgreSQL 12.
+ - Wheel package compiled against OpenSSL 1.1.1d and PostgreSQL at least 11.4.
+
+-------------------------------------------------------------------
+Mon Oct 14 14:14:29 UTC 2019 - Matej Cepl <mcepl(a)suse.com>
+
+- Replace %fdupes -s with plain %fdupes; hardlinks are better.
+
+-------------------------------------------------------------------
+Thu Jul 4 15:02:11 UTC 2019 - Daniel Molkentin <daniel.molkentin(a)suse.com>
+
+- Update to 2.8.4
+ * Added interval_status parameter to start_replication() method and other
+ facilities to send automatic replication keepalives at periodic intervals
+ (ticket #913).
+ * Fixed namedtuples caching introduced in 2.8 (ticket #928).
+
+-------------------------------------------------------------------
+Tue Jun 4 15:36:23 UTC 2019 - Marketa Calabkova <mcalabkova(a)suse.com>
+
+- Update to 2.8.3
+ * Added interval_status parameter to start_replication() method
+ and other facilities to send automatic replication keepalives
+ at periodic intervals
+ * Fixed RealDictCursor when there are repeated columns
+ * Fixed RealDictRow modifiability
+ * Fixed “there’s no async cursor” error polling a connection with
+ no cursor
+ 2.8.0
+ * Added errors module. Every PostgreSQL error is converted into
+ a specific exception class
+ * Added encrypt_password() function
+ * Added BYTES adapter to manage databases with mixed encodings on
+ Python 3
+ * Added table_oid and table_column attributes on cursor.description
+ items
+ * Added connection.info object to retrieve various PostgreSQL
+ connection information
+ * str() on Range produces a human-readable representation
+ * Fixed async communication blocking if results are returned in
+ different chunks
+ * Fixed adaptation of numeric subclasses such as IntEnum
+ * Dropped support for Python 2.6, 3.2, 3.3.
+ * Dropped deprecated register_tstz_w_secs()
+ * Dropped deprecated PersistentConnectionPool. Use
+ ZPsycopgDA.pool instead.
+ * Binary packages no longer installed by default. The
+ ‘psycopg2-binary’ package must be used explicitly.
+ * Dropped PSYCOPG_DISPLAY_SIZE build parameter.
+
+-------------------------------------------------------------------
+Tue Apr 2 16:43:30 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Requires postgresql-server-devel on Factory now.
+
+-------------------------------------------------------------------
+Mon Mar 4 12:13:19 UTC 2019 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Update to 2.7.7:
+ * Cleanup of the cursor results assignment code, which might have solved
+ double free and inconsistencies in concurrent usage (:tickets:`#346, #384`).
+ * Close named cursors if exist, even if execute() wasn't called (ticket #746).
+ * Fixed building on modern FreeBSD versions with Python 3.7 (ticket #755).
+ * Fixed hang trying to COPY via execute() in asynchronous connections (ticket #781).
+ * Fixed adaptation of arrays of empty arrays (ticket #788).
+ * Fixed segfault accessing the connection.readonly and connection.deferrable attributes repeatedly (ticket #790).
+ * execute_values() accepts sql.Composable objects (ticket #794).
+ * errorcodes map updated to PostgreSQL 11.
+ * Allow non-ascii chars in namedtuple fields (regression introduced fixing ticket #211).
+ * Fixed adaptation of arrays of arrays of nulls (ticket #325).
+ * Fixed building on Solaris 11 and derivatives such as SmartOS and illumos (ticket #677).
+ * Maybe fixed building on MSYS2 (as reported in ticket #658).
+ * Allow string subclasses in connection and other places (ticket #679).
+ * Don't raise an exception closing an unused named cursor (ticket #716).
+
+-------------------------------------------------------------------
Old:
----
psycopg2-2.7.4.tar.gz
New:
----
psycopg2-2.8.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-psycopg2.spec ++++++
--- /var/tmp/diff_new_pack.Ieq6X9/_old 2020-05-29 15:16:33.911153194 +0200
+++ /var/tmp/diff_new_pack.Ieq6X9/_new 2020-05-29 15:16:33.915153207 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-psycopg2
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,24 +12,29 @@
# 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-psycopg2
-Version: 2.7.4
+Version: 2.8.5
Release: 0
Summary: Python-PostgreSQL Database Adapter
License: LGPL-3.0-or-later AND (LGPL-3.0-or-later OR ZPL-2.0) AND SUSE-GPL-2.0-with-openssl-exception
-Group: Development/Languages/Python
-Url: http://initd.org/psycopg/
+URL: http://initd.org/psycopg/
Source: https://files.pythonhosted.org/packages/source/p/psycopg2/psycopg2-%{versio…
BuildRequires: %{python_module devel}
+BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
-BuildRequires: postgresql-devel >= 9.1
BuildRequires: python-rpm-macros
-%if 0%{?suse_version} >= 1000 || 0%{?fedora_version} >= 24
+# newer postgresql packages pg_config in -server-devel
+%if 0%{?sle_version} > 150100 || 0%{?suse_version} > 1500
+BuildRequires: postgresql-server-devel >= 9.1
+%else
+BuildRequires: postgresql-devel >= 9.1
+%endif
+%if 0%{?suse_version} || 0%{?fedora_version} >= 24
Suggests: postgresql-server
%endif
%python_subpackages
@@ -54,11 +59,16 @@
%install
%python_install
%python_expand rm -rf %{buildroot}%{$python_sitearch}/psycopg2/tests # Don't package testsuite
-%fdupes -s %{buildroot}/%{_mandir} # Create symlinks for man pages
-%fdupes %{buildroot} # Create hardlinks for the rest
+%fdupes %{buildroot}/%{_mandir} # Create symlinks for man pages
+%python_expand %fdupes %{buildroot}%{$python_sitearch}
+
+%check
+# tests require running PGSQL
+#%%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} $python -m unittest discover
%files %{python_files}
-%doc AUTHORS LICENSE NEWS README.rst
+%license LICENSE
+%doc AUTHORS NEWS README.rst
%{python_sitearch}/psycopg2/
%{python_sitearch}/psycopg2-%{version}-py%{python_version}.egg-info
++++++ psycopg2-2.7.4.tar.gz -> psycopg2-2.8.5.tar.gz ++++++
++++ 27473 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package trousers for openSUSE:Leap:15.2 checked in at 2020-05-29 15:16:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/trousers (Old)
and /work/SRC/openSUSE:Leap:15.2/.trousers.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "trousers"
Fri May 29 15:16:27 2020 rev:14 rq:810121 version:0.3.14
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/trousers/trousers.changes 2020-01-15 16:25:05.448640808 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.trousers.new.3606/trousers.changes 2020-05-29 15:16:32.823149645 +0200
@@ -1,0 +2,10 @@
+Mon May 25 08:55:27 UTC 2020 - Matthias Gerstner <matthias.gerstner(a)suse.com>
+
+- fix a potential tss user to root privilege escalation when running tcsd
+ (bsc#1164472). To do this run tcsd as the 'tss' user right away to prevent
+ badly designed privilege drop and initialization code to run.
+- add bsc1164472.patch: additionally harden operation of tcsd when running as
+ root. No longer follow symlinks in /var/lib/tpm. Drop gid to tss main group.
+ require /etc/tcsd.conf to be owned by root:tss mode 0640.
+
+-------------------------------------------------------------------
New:
----
91-trousers.rules
bsc1164472.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ trousers.spec ++++++
--- /var/tmp/diff_new_pack.ausZQU/_old 2020-05-29 15:16:33.235150989 +0200
+++ /var/tmp/diff_new_pack.ausZQU/_new 2020-05-29 15:16:33.239151002 +0200
@@ -27,11 +27,14 @@
Source0: http://downloads.sf.net/trousers/%{name}-%{version}.tar.gz
Source1: tcsd.service
Source2: baselibs.conf
+Source3: 91-trousers.rules
+Patch1: bsc1164472.patch
BuildRequires: gtk2-devel
BuildRequires: libtool
BuildRequires: openssl-devel
BuildRequires: pkg-config
BuildRequires: systemd-rpm-macros
+BuildRequires: udev
# for 'stat' for the hack in %pretrans
BuildRequires: coreutils
Requires(pre): pwdutils
@@ -79,6 +82,7 @@
%prep
%setup -q -c %{name}-%{version}
+%patch1 -p1
%build
CC=gcc
@@ -107,6 +111,14 @@
rm -v %{buildroot}/%{_lib}/libtspi.{so,la}
mv -v %{buildroot}/%{_lib}/*.a %{buildroot}%{_libdir}
+# we want to run tcsd as tss user right away. therefore we need to install a
+# suitable udev rule file. this conflicts somewhat with tpm2-0-tss, but both
+# rules files are compatible at the moment. trousers has a lower priority than
+# tpm2-0-tss in case both should be installed. The tss user is shared between
+# both packages anyways already.
+mkdir -p %{buildroot}%{_udevrulesdir}
+install -m 0644 %{SOURCE3} %{buildroot}%{_udevrulesdir}
+
%pre
%_bindir/getent group tss >/dev/null || %{_sbindir}/groupadd -g 98 tss || :
%_bindir/getent passwd tss >/dev/null || \
@@ -139,20 +151,15 @@
%post
%service_add_post tcsd.service
+%_bindir/udevadm trigger -s tpm || :
-%posttrans
-# see pretrans for an explanation of this
-for data in system.data.auth system.data.noauth; do
- file="%{tpmstatedir}/${data}"
- # nothing to restore here
- [ ! -e "${file}.rpmsave" ] && continue
- # for some reason the to-be-restored file already exists? ignore.
- [ -e "${file}" ] && continue
- # restore the original file
- echo "restoring backup of $file"
- mv --no-target-directory ${file}.rpmsave ${file}
- chown --no-dereference tss:tss "${file}"
-done
+# bsc#1164472: adjust potential root ownership to allow tcsd to open the file
+# as unprivileged user. Be careful not to follow a symlink target.
+system_data=%{tpmstatedir}/system.data
+
+if [ -e "${system_data}" ]; then
+ chown --no-dereference tss:tss %{tpmstatedir}/system.data
+fi
%postun
%service_del_postun tcsd.service
@@ -166,7 +173,7 @@
%files
%defattr(-,root,root)
-%config(noreplace) %attr(600,tss,tss) %{_sysconfdir}/tcsd.conf
+%config(noreplace) %attr(640,root,tss) %{_sysconfdir}/tcsd.conf
%doc README README.selinux AUTHORS ChangeLog LICENSE NICETOHAVES TODO doc/*
%{_mandir}/man5/*
%{_mandir}/man8/*
@@ -175,6 +182,7 @@
%{_sbindir}/tcsd
%{_sbindir}/rctcsd
%{_unitdir}/tcsd.service
+%{_udevrulesdir}/91-trousers.rules
%files devel
%defattr(-,root,root)
++++++ 91-trousers.rules ++++++
KERNEL=="tpm[0-9]*", MODE="0660", OWNER="tss"
++++++ bsc1164472.patch ++++++
Index: trousers-0.3.14/src/tcs/ps/tcsps.c
===================================================================
--- trousers-0.3.14.orig/src/tcs/ps/tcsps.c
+++ trousers-0.3.14/src/tcs/ps/tcsps.c
@@ -72,7 +72,7 @@ get_file()
}
/* open and lock the file */
- system_ps_fd = open(tcsd_options.system_ps_file, O_CREAT|O_RDWR, 0600);
+ system_ps_fd = open(tcsd_options.system_ps_file, O_CREAT|O_RDWR|O_NOFOLLOW, 0600);
if (system_ps_fd < 0) {
LogError("system PS: open() of %s failed: %s",
tcsd_options.system_ps_file, strerror(errno));
Index: trousers-0.3.14/src/tcsd/svrside.c
===================================================================
--- trousers-0.3.14.orig/src/tcsd/svrside.c
+++ trousers-0.3.14/src/tcsd/svrside.c
@@ -473,6 +473,7 @@ main(int argc, char **argv)
}
return TCSERR(TSS_E_INTERNAL_ERROR);
}
+ setgid(pwd->pw_gid);
setuid(pwd->pw_uid);
#endif
#endif
Index: trousers-0.3.14/src/tcsd/tcsd_conf.c
===================================================================
--- trousers-0.3.14.orig/src/tcsd/tcsd_conf.c
+++ trousers-0.3.14/src/tcsd/tcsd_conf.c
@@ -743,7 +743,7 @@ conf_file_init(struct tcsd_config *conf)
#ifndef SOLARIS
struct group *grp;
struct passwd *pw;
- mode_t mode = (S_IRUSR|S_IWUSR);
+ mode_t mode = (S_IRUSR|S_IWUSR|S_IRGRP);
#endif /* SOLARIS */
TSS_RESULT result;
@@ -798,15 +798,15 @@ conf_file_init(struct tcsd_config *conf)
}
/* make sure user/group TSS owns the conf file */
- if (pw->pw_uid != stat_buf.st_uid || grp->gr_gid != stat_buf.st_gid) {
+ if (stat_buf.st_uid != 0 || grp->gr_gid != stat_buf.st_gid) {
LogError("TCSD config file (%s) must be user/group %s/%s", tcsd_config_file,
- TSS_USER_NAME, TSS_GROUP_NAME);
+ "root", TSS_GROUP_NAME);
return TCSERR(TSS_E_INTERNAL_ERROR);
}
- /* make sure only the tss user can manipulate the config file */
+ /* make sure only the tss user can read (but not manipulate) the config file */
if (((stat_buf.st_mode & 0777) ^ mode) != 0) {
- LogError("TCSD config file (%s) must be mode 0600", tcsd_config_file);
+ LogError("TCSD config file (%s) must be mode 0640", tcsd_config_file);
return TCSERR(TSS_E_INTERNAL_ERROR);
}
#endif /* SOLARIS */
++++++ tcsd.service ++++++
--- /var/tmp/diff_new_pack.ausZQU/_old 2020-05-29 15:16:33.315151250 +0200
+++ /var/tmp/diff_new_pack.ausZQU/_new 2020-05-29 15:16:33.315151250 +0200
@@ -4,6 +4,7 @@
[Service]
Type=forking
ExecStart=/usr/sbin/tcsd
+User=tss
[Install]
WantedBy=multi-user.target
1
0
Hello community,
here is the log from the commit of package crmsh for openSUSE:Leap:15.2 checked in at 2020-05-29 15:16:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/crmsh (Old)
and /work/SRC/openSUSE:Leap:15.2/.crmsh.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crmsh"
Fri May 29 15:16:25 2020 rev:74 rq:810132 version:4.2.0+git.1585096577.f3257c89
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/crmsh/crmsh.changes 2020-05-28 20:09:29.642880750 +0200
+++ /work/SRC/openSUSE:Leap:15.2/.crmsh.new.3606/crmsh.changes 2020-05-29 15:16:32.199147609 +0200
@@ -1,0 +2,9 @@
+Wed May 27 11:58:42 UTC 2020 - XinLiang <XLiang(a)suse.com>
+
+- Add patches:
+ - Low: bootstrap: Simplify bootstrap context
+ * 0001-Low-bootstrap-Simplify-bootstrap-context.patch
+ - High: bootstrap: using class SBDManager for sbd configuration and management(bsc#1170037, bsc#1170999)
+ * 0002-High-bootstrap-using-class-SBDManager-for-sbd-config.patch
+
+-------------------------------------------------------------------
New:
----
0001-Low-bootstrap-Simplify-bootstrap-context.patch
0002-High-bootstrap-using-class-SBDManager-for-sbd-config.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ crmsh.spec ++++++
--- /var/tmp/diff_new_pack.jBXfP5/_old 2020-05-29 15:16:32.563148796 +0200
+++ /var/tmp/diff_new_pack.jBXfP5/_new 2020-05-29 15:16:32.567148810 +0200
@@ -40,6 +40,8 @@
Release: 0
Url: http://crmsh.github.io
Source0: %{name}-%{version}.tar.bz2
+Patch1: 0001-Low-bootstrap-Simplify-bootstrap-context.patch
+Patch2: 0002-High-bootstrap-using-class-SBDManager-for-sbd-config.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version}
@@ -142,6 +144,8 @@
%prep
%setup -q
+%patch1 -p1
+%patch2 -p1
# replace the shebang in all the scripts
# with ${_bindir}/python3
++++++ 0001-Low-bootstrap-Simplify-bootstrap-context.patch ++++++
>From 76ca07fa006ae6726fe8f3f0afd57883eaf3b23e Mon Sep 17 00:00:00 2001
From: liangxin1300 <XLiang(a)suse.com>
Date: Sun, 22 Mar 2020 17:38:49 +0800
Subject: [PATCH 1/2] Low: bootstrap: Simplify bootstrap context
---
crmsh/bootstrap.py | 200 ++++++++++++++++++++------------------------
crmsh/ui_cluster.py | 105 ++++++++++-------------
2 files changed, 134 insertions(+), 171 deletions(-)
diff --git a/crmsh/bootstrap.py b/crmsh/bootstrap.py
index db78b7dd..c8e21bb3 100644
--- a/crmsh/bootstrap.py
+++ b/crmsh/bootstrap.py
@@ -50,27 +50,59 @@ class Context(object):
Context object used to avoid having to pass these variables
to every bootstrap method.
"""
- def __init__(self, quiet, yes_to_all, nic=None, ip_address=None, ip_network=None):
- self.quiet = quiet
- self.yes_to_all = yes_to_all
- self.nic = nic
- self.ip_address = ip_address
- self.ip_network = ip_network
+ def __init__(self):
+ '''
+ Initialize attributes
+ '''
+ self.quiet = None
+ self.yes_to_all = None
+ self.template = None
self.cluster_name = None
- self.cluster_node = None
- self.ocfs2_device = None
- self.shared_device = None
- self.sbd_device = None
- self.diskless_sbd = False # if True, enable SBD for diskless operation
+ self.diskless_sbd = None
+ self.watchdog = None
+ self.no_overwrite_sshkey = None
+ self.nic = None
self.unicast = None
- self.ipv6 = None
self.admin_ip = None
- self.watchdog = None
- self.host_status = None
- self.connect_name = None
self.second_hb = None
- self.ui_context = None
+ self.ipv6 = None
self.qdevice = None
+ self.qdevice_host = None
+ self.qdevice_port = None
+ self.qdevice_algo = None
+ self.qdevice_tie_breaker = None
+ self.qdevice_tls = None
+ self.qdevice_heuristics = None
+ self.qdevice_heuristics_mode = None
+ self.shared_device = None
+ self.sbd_device = None
+ self.ocfs2_device = None
+ self.cluster_node = None
+ self.force = None
+ self.arbitrator = None
+ self.clusters = None
+ self.tickets = None
+ self.ip_address = None
+ self.ip_network = None
+
+ @classmethod
+ def set_context(cls, options):
+ ctx = cls()
+ for opt in vars(options):
+ setattr(ctx, opt, getattr(options, opt))
+ return ctx
+
+ def init_qdevice(self):
+ if not self.qdevice_host:
+ return
+ self.qdevice = corosync.QDevice(
+ self.qdevice_host,
+ port=self.qdevice_port,
+ algo=self.qdevice_algo,
+ tie_breaker=self.qdevice_tie_breaker,
+ tls=self.qdevice_tls,
+ cmds=self.qdevice_heuristics,
+ mode=self.qdevice_heuristics_mode)
_context = None
@@ -1724,8 +1756,9 @@ def join_csync2(seed_host):
# If we *were* updating /etc/hosts, the next line would have "\"$hosts_line\"" as
# the last arg (but this requires re-enabling this functionality in ha-cluster-init)
- if not invoke("ssh -o StrictHostKeyChecking=no root@{} crm cluster init -i {} csync2_remote {}".format(seed_host, _context.nic, utils.this_node())):
- error("Can't invoke crm cluster init -i {} init csync2_remote on {}".format(_context.nic, seed_host))
+ cmd = "crm cluster init -i {} csync2_remote {}".format(_context.nic, utils.this_node())
+ if not invoke("ssh -o StrictHostKeyChecking=no root@{} {}".format(seed_host, cmd)):
+ error("Can't invoke \"{}\" on {}".format(cmd, seed_host))
# This is necessary if syncing /etc/hosts (to ensure everyone's got the
# same list of hosts)
@@ -2215,53 +2248,10 @@ def remove_localhost_check():
return nodename == utils.this_node()
-def bootstrap_init(cluster_name="hacluster", ui_context=None, nic=None, ocfs2_device=None,
- shared_device=None, sbd_device=None, diskless_sbd=False, quiet=False,
- template=None, admin_ip=None, yes_to_all=False, no_overwrite_sshkey=False,
- unicast=False, second_hb=False, ipv6=False, watchdog=None, qdevice=None, stage=None, args=None):
- """
- -i <nic>
- -o <ocfs2-device>
- -p <shared-device>
- -s <sbd-device>
- -S - configure SBD without disk
- -t <template>
- -A [<admin-ip>]
- -q - quiet
- -y - yes to all
- -u - unicast
- <stage>
-
- stages:
- ssh
- ssh_remote
- csync2
- csync2_remote
- corosync
- storage
- sbd
- cluster
- vgfs
- admin
- qdevice
+def bootstrap_init(context):
+ """
+ Init cluster process
"""
- global _context
- _context = Context(quiet=quiet, yes_to_all=yes_to_all, nic=nic)
- _context.cluster_name = cluster_name
- _context.ocfs2_device = ocfs2_device
- _context.shared_device = shared_device
- _context.sbd_device = sbd_device
- _context.diskless_sbd = diskless_sbd
- _context.unicast = unicast
- _context.second_hb = second_hb
- _context.ipv6 = ipv6
- _context.admin_ip = admin_ip
- _context.watchdog = watchdog
- _context.ui_context = ui_context
- _context.qdevice = qdevice
- _context.no_overwrite_sshkey = no_overwrite_sshkey
- _context.stage = stage
-
def check_option():
if _context.admin_ip and not valid_adminIP(_context.admin_ip):
error("Invalid option: admin_ip")
@@ -2271,6 +2261,11 @@ def bootstrap_init(cluster_name="hacluster", ui_context=None, nic=None, ocfs2_de
except ValueError as err:
error(err)
+ global _context
+ _context = context
+ _context.init_qdevice()
+
+ stage = _context.stage
if stage is None:
stage = ""
@@ -2296,6 +2291,7 @@ def bootstrap_init(cluster_name="hacluster", ui_context=None, nic=None, ocfs2_de
if not check_prereqs(stage):
return
elif stage == 'csync2_remote':
+ args = _context.args
log("args: {}".format(args))
if len(args) != 2:
error("Expected NODE argument to csync2_remote")
@@ -2306,18 +2302,18 @@ def bootstrap_init(cluster_name="hacluster", ui_context=None, nic=None, ocfs2_de
if stage != "":
globals()["init_" + stage]()
else:
- if watchdog is not None:
+ if _context.watchdog is not None:
init_watchdog()
init_ssh()
init_csync2()
init_corosync()
init_remote_auth()
- if template == 'ocfs2':
- if sbd_device is None or ocfs2_device is None:
+ if _context.template == 'ocfs2':
+ if _context.sbd_device is None or _context.ocfs2_device is None:
init_storage()
init_sbd()
init_cluster()
- if template == 'ocfs2':
+ if _context.template == 'ocfs2':
init_vgfs()
init_admin()
init_qdevice()
@@ -2325,24 +2321,12 @@ def bootstrap_init(cluster_name="hacluster", ui_context=None, nic=None, ocfs2_de
status("Done (log saved to %s)" % (LOG_FILE))
-def bootstrap_join(cluster_node=None, ui_context=None, nic=None, quiet=False, yes_to_all=False, watchdog=None, stage=None):
+def bootstrap_join(context):
"""
- -c <cluster-node>
- -i <nic>
- -q - quiet
- -y - yes to all
- <stage>
- # stages:
- ssh
- csync2
- ssh_merge
- cluster
+ Join cluster process
"""
global _context
- _context = Context(quiet=quiet, yes_to_all=yes_to_all, nic=nic)
- _context.cluster_node = cluster_node
- _context.watchdog = watchdog
- _context.ui_context = ui_context
+ _context = context
check_tty()
@@ -2355,10 +2339,11 @@ def bootstrap_join(cluster_node=None, ui_context=None, nic=None, quiet=False, ye
init()
- if stage != "":
- globals()["join_" + stage](cluster_node)
+ cluster_node = _context.cluster_node
+ if _context.stage != "":
+ globals()["join_" + _context.stage](cluster_node)
else:
- if not yes_to_all and cluster_node is None:
+ if not _context.yes_to_all and cluster_node is None:
status("""Join This Node to Cluster:
You will be asked for the IP address of an existing node, from which
configuration will be copied. If you have not already configured
@@ -2385,19 +2370,15 @@ def join_remote_auth(node):
invoke("touch {}".format(PCMK_REMOTE_AUTH))
-def bootstrap_remove(cluster_node=None, ui_context=None, quiet=False, yes_to_all=False, force=False,
- qdevice=None):
+def bootstrap_remove(context):
"""
- -c <cluster-node> - node to remove from cluster
- -q - quiet
- -y - yes to all
- -f - force removal of self
+ Remove node from cluster, or remove qdevice configuration
"""
global _context
- _context = Context(quiet=quiet, yes_to_all=yes_to_all)
- _context.cluster_node = cluster_node
- _context.ui_context = ui_context
- _context.qdevice = qdevice
+ _context = context
+ yes_to_all = _context.yes_to_all
+ cluster_node = _context.cluster_node
+ force = _context.force
if _context.qdevice:
if not utils.is_qdevice_configured():
@@ -2527,13 +2508,12 @@ port="9929"
os.chmod(BOOTH_CFG, 0o644)
-def bootstrap_init_geo(quiet, yes_to_all, arbitrator, clusters, tickets, ui_context=None):
+def bootstrap_init_geo(context):
"""
Configure as a geo cluster member.
"""
global _context
- _context = Context(quiet=quiet, yes_to_all=yes_to_all)
- _context.ui_context = ui_context
+ _context = context
if os.path.exists(BOOTH_CFG) and not confirm("This will overwrite {} - continue?".format(BOOTH_CFG)):
return
@@ -2548,18 +2528,18 @@ def bootstrap_init_geo(quiet, yes_to_all, arbitrator, clusters, tickets, ui_cont
# set common.startup.degr-wfc-timeout 120
create_booth_authkey()
- create_booth_config(arbitrator, clusters, tickets)
+ create_booth_config(_context.arbitrator, _context.clusters, _context.tickets)
status("Sync booth configuration across cluster")
csync2_update("/etc/booth")
init_csync2_geo()
- geo_cib_config(clusters)
+ geo_cib_config(_context.clusters)
def geo_fetch_config(node):
# TODO: clean this up
status("Retrieving configuration - This may prompt for root@%s:" % (node))
tmpdir = tmpfiles.create_dir()
- invoke("scp root@%s:'/etc/booth/*' %s/" % (node, tmpdir))
+ invoke("scp -oStrictHostKeyChecking=no root@%s:'/etc/booth/*' %s/" % (node, tmpdir))
try:
if os.path.isfile("%s/authkey" % (tmpdir)):
invoke("mv %s/authkey %s" % (tmpdir, BOOTH_AUTH))
@@ -2589,30 +2569,30 @@ group g-booth booth-ip booth-site meta target-role=Stopped
crm_configure_load("update", crm_template.substitute(iprules=" ".join(iprule.format(k, v) for k, v in clusters.items())))
-def bootstrap_join_geo(quiet, yes_to_all, node, clusters, ui_context=None):
+def bootstrap_join_geo(context):
"""
Run on second cluster to add to a geo configuration.
It fetches its booth configuration from the other node (cluster node or arbitrator).
"""
global _context
- _context = Context(quiet=quiet, yes_to_all=yes_to_all)
- _context.ui_context = ui_context
+ _context = context
init_common_geo()
check_tty()
- geo_fetch_config(node)
+ geo_fetch_config(_context.cluster_node)
status("Sync booth configuration across cluster")
csync2_update("/etc/booth")
- geo_cib_config(clusters)
+ geo_cib_config(_context.clusters)
-def bootstrap_arbitrator(quiet, yes_to_all, node, ui_context=None):
+def bootstrap_arbitrator(context):
"""
Configure this machine as an arbitrator.
It fetches its booth configuration from a cluster node already in the cluster.
"""
global _context
- _context = Context(quiet=quiet, yes_to_all=yes_to_all)
- _context.ui_context = ui_context
+ _context = context
+ node = _context.cluster_node
+
init_common_geo()
check_tty()
geo_fetch_config(node)
diff --git a/crmsh/ui_cluster.py b/crmsh/ui_cluster.py
index aa27f4cd..37eb4072 100644
--- a/crmsh/ui_cluster.py
+++ b/crmsh/ui_cluster.py
@@ -208,7 +208,7 @@ Note:
help='Answer "yes" to all prompts (use with caution, this is destructive, especially during the "storage" stage. The /root/.ssh/id_rsa key will be overwritten unless the option "--no-overwrite-sshkey" is used)')
parser.add_argument("-t", "--template", dest="template",
help='Optionally configure cluster with template "name" (currently only "ocfs2" is valid here)')
- parser.add_argument("-n", "--name", metavar="NAME", dest="name", default="hacluster",
+ parser.add_argument("-n", "--name", metavar="NAME", dest="cluster_name", default="hacluster",
help='Set the name of the configured cluster.')
parser.add_argument("-N", "--nodes", metavar="NODES", dest="nodes",
help='Additional nodes to add to the created cluster. May include the current node, which will always be the initial cluster node.')
@@ -234,7 +234,7 @@ Note:
help="Configure corosync use IPv6")
qdevice_group = parser.add_argument_group("QDevice configuration", "Options for configuring QDevice and QNetd.")
- qdevice_group.add_argument("--qnetd-hostname", dest="qdevice", metavar="HOST",
+ qdevice_group.add_argument("--qnetd-hostname", dest="qdevice_host", metavar="HOST",
help="HOST or IP of the QNetd server to be used")
qdevice_group.add_argument("--qdevice-port", dest="qdevice_port", metavar="PORT", type=int, default=5403,
help="TCP PORT of QNetd server(default:5403)")
@@ -270,45 +270,21 @@ Note:
if options.template and options.template != "ocfs2":
parser.error("Invalid template (%s)" % (options.template))
- # if options.geo and options.name == "hacluster":
- # parser.error("For a geo cluster, each cluster must have a unique name (use --name to set)")
-
- qdevice = None
- if options.qdevice:
+ if options.qdevice_host:
if options.qdevice_heuristics_mode and not options.qdevice_heuristics:
parser.error("Option --qdevice-heuristics is required if want to configure heuristics mode")
options.qdevice_heuristics_mode = options.qdevice_heuristics_mode or "sync"
- qdevice = corosync.QDevice(
- options.qdevice,
- port=options.qdevice_port,
- algo=options.qdevice_algo,
- tie_breaker=options.qdevice_tie_breaker,
- tls=options.qdevice_tls,
- cmds=options.qdevice_heuristics,
- mode=options.qdevice_heuristics_mode)
elif re.search("--qdevice-.*", ' '.join(sys.argv)):
parser.error("Option --qnetd-hostname is required if want to configure qdevice")
- bootstrap.bootstrap_init(
- cluster_name=options.name,
- ui_context=context,
- nic=options.nic,
- ocfs2_device=options.ocfs2_device,
- shared_device=options.shared_device,
- sbd_device=options.sbd_device,
- diskless_sbd=options.diskless_sbd,
- quiet=options.quiet,
- template=options.template,
- admin_ip=options.admin_ip,
- yes_to_all=options.yes_to_all,
- no_overwrite_sshkey=options.no_overwrite_sshkey,
- unicast=options.unicast,
- second_hb=options.second_hb,
- ipv6=options.ipv6,
- watchdog=options.watchdog,
- qdevice=qdevice,
- stage=stage,
- args=args)
+ # if options.geo and options.name == "hacluster":
+ # parser.error("For a geo cluster, each cluster must have a unique name (use --name to set)")
+ boot_context = bootstrap.Context.set_context(options)
+ boot_context.ui_context = context
+ boot_context.stage = stage
+ boot_context.args = args
+
+ bootstrap.bootstrap_init(boot_context)
# if options.geo:
# bootstrap.bootstrap_init_geo()
@@ -358,14 +334,11 @@ If stage is not specified, each stage will be invoked in sequence.
if stage not in ("ssh", "csync2", "ssh_merge", "cluster", ""):
parser.error("Invalid stage (%s)" % (stage))
- bootstrap.bootstrap_join(
- cluster_node=options.cluster_node,
- ui_context=context,
- nic=options.nic,
- quiet=options.quiet,
- yes_to_all=options.yes_to_all,
- watchdog=options.watchdog,
- stage=stage)
+ join_context = bootstrap.Context.set_context(options)
+ join_context.ui_context = context
+ join_context.stage = stage
+
+ bootstrap.bootstrap_join(join_context)
return True
@@ -417,21 +390,16 @@ If stage is not specified, each stage will be invoked in sequence.
if options.cluster_node is not None and options.cluster_node not in args:
args = list(args) + [options.cluster_node]
+
+ rm_context = bootstrap.Context.set_context(options)
+ rm_context.ui_context = context
+
if len(args) == 0:
- bootstrap.bootstrap_remove(
- cluster_node=None,
- ui_context=context,
- quiet=options.quiet,
- yes_to_all=options.yes_to_all,
- qdevice=options.qdevice)
+ bootstrap.bootstrap_remove(rm_context)
else:
for node in args:
- bootstrap.bootstrap_remove(
- cluster_node=node,
- ui_context=context,
- quiet=options.quiet,
- yes_to_all=options.yes_to_all,
- force=options.force)
+ rm_context.cluster_node = node
+ bootstrap.bootstrap_remove(rm_context)
return True
@command.skill_level('administrator')
@@ -529,7 +497,13 @@ Cluster Description
ticketlist = [t for t in re.split('[ ,;]+', options.tickets)]
except ValueError:
parser.error("Invalid ticket list")
- bootstrap.bootstrap_init_geo(options.quiet, options.yes_to_all, options.arbitrator, clustermap, ticketlist, ui_context=context)
+
+ geo_context = bootstrap.Context.set_context(options)
+ geo_context.clusters = clustermap
+ geo_context.tickets = ticketlist
+ geo_context.ui_context = context
+
+ bootstrap.bootstrap_init_geo(geo_context)
return True
@command.name("geo_join")
@@ -543,13 +517,13 @@ Cluster Description
parser.add_argument("-h", "--help", action="store_true", dest="help", help="Show this help message")
parser.add_argument("-q", "--quiet", help="Be quiet (don't describe what's happening, just do it)", action="store_true", dest="quiet")
parser.add_argument("-y", "--yes", help='Answer "yes" to all prompts (use with caution)', action="store_true", dest="yes_to_all")
- parser.add_argument("-c", "--cluster-node", help="IP address of an already-configured geo cluster or arbitrator", dest="node", metavar="IP")
+ parser.add_argument("-c", "--cluster-node", help="IP address of an already-configured geo cluster or arbitrator", dest="cluster_node", metavar="IP")
parser.add_argument("-s", "--clusters", help="Geo cluster description (see geo-init for details)", dest="clusters", metavar="DESC")
options, args = parse_options(parser, args)
if options is None or args is None:
return
errs = []
- if options.node is None:
+ if options.cluster_node is None:
errs.append("The --cluster-node argument is required.")
if options.clusters is None:
errs.append("The --clusters argument is required.")
@@ -558,7 +532,12 @@ Cluster Description
clustermap = self._parse_clustermap(options.clusters)
if clustermap is None:
parser.error("Invalid cluster description format")
- bootstrap.bootstrap_join_geo(options.quiet, options.yes_to_all, options.node, clustermap, ui_context=context)
+
+ geo_context = bootstrap.Context.set_context(options)
+ geo_context.clusters = clustermap
+ geo_context.ui_context = context
+
+ bootstrap.bootstrap_join_geo(geo_context)
return True
@command.name("geo_init_arbitrator")
@@ -572,11 +551,15 @@ Cluster Description
parser.add_argument("-h", "--help", action="store_true", dest="help", help="Show this help message")
parser.add_argument("-q", "--quiet", help="Be quiet (don't describe what's happening, just do it)", action="store_true", dest="quiet")
parser.add_argument("-y", "--yes", help='Answer "yes" to all prompts (use with caution)', action="store_true", dest="yes_to_all")
- parser.add_argument("-c", "--cluster-node", help="IP address of an already-configured geo cluster", dest="other", metavar="IP")
+ parser.add_argument("-c", "--cluster-node", help="IP address of an already-configured geo cluster", dest="cluster_node", metavar="IP")
options, args = parse_options(parser, args)
if options is None or args is None:
return
- bootstrap.bootstrap_arbitrator(options.quiet, options.yes_to_all, options.other, ui_context=context)
+
+ geo_context = bootstrap.Context.set_context(options)
+ geo_context.ui_context = context
+
+ bootstrap.bootstrap_arbitrator(geo_context)
return True
@command.completers_repeating(compl.call(scripts.param_completion_list, 'health'))
--
2.21.1
++++++ 0002-High-bootstrap-using-class-SBDManager-for-sbd-config.patch ++++++
>From 45d0feaa92f357b216d92a99545d4acd3b68ed41 Mon Sep 17 00:00:00 2001
From: liangxin1300 <XLiang(a)suse.com>
Date: Fri, 8 May 2020 15:14:10 +0800
Subject: [PATCH 2/2] High: bootstrap: using class SBDManager for sbd
configuration and management(bsc#1170037, bsc#1170999)
---
crmsh/bootstrap.py | 398 +++++++++++++++++++++++++-------------------
crmsh/ui_cluster.py | 2 +-
2 files changed, 230 insertions(+), 170 deletions(-)
diff --git a/crmsh/bootstrap.py b/crmsh/bootstrap.py
index c8e21bb3..56397f1a 100644
--- a/crmsh/bootstrap.py
+++ b/crmsh/bootstrap.py
@@ -58,7 +58,6 @@ class Context(object):
self.yes_to_all = None
self.template = None
self.cluster_name = None
- self.diskless_sbd = None
self.watchdog = None
self.no_overwrite_sshkey = None
self.nic = None
@@ -75,7 +74,6 @@ class Context(object):
self.qdevice_heuristics = None
self.qdevice_heuristics_mode = None
self.shared_device = None
- self.sbd_device = None
self.ocfs2_device = None
self.cluster_node = None
self.force = None
@@ -84,6 +82,9 @@ class Context(object):
self.tickets = None
self.ip_address = None
self.ip_network = None
+ self.sbd_manager = None
+ self.sbd_devices = None
+ self.diskless_sbd = None
@classmethod
def set_context(cls, options):
@@ -104,6 +105,225 @@ class Context(object):
cmds=self.qdevice_heuristics,
mode=self.qdevice_heuristics_mode)
+ def init_sbd_manager(self):
+ self.sbd_manager = SBDManager(self.sbd_devices, self.diskless_sbd)
+
+
+class SBDManager(object):
+ """
+ Class to manage sbd configuration and services
+ """
+ SYSCONFIG_SBD_TEMPLATE = "/usr/share/fillup-templates/sysconfig.sbd"
+ SBD_STATUS_DESCRIPTION = """
+Configure SBD:
+ If you have shared storage, for example a SAN or iSCSI target,
+ you can use it avoid split-brain scenarios by configuring SBD.
+ This requires a 1 MB partition, accessible to all nodes in the
+ cluster. The device path must be persistent and consistent
+ across all nodes in the cluster, so /dev/disk/by-id/* devices
+ are a good choice. Note that all data on the partition you
+ specify here will be destroyed.
+"""
+
+ def __init__(self, sbd_devices=None, diskless_sbd=False):
+ """
+ Init function
+
+ sbd_devices is provided by '-s' option on init process
+ diskless_sbd is provided by '-S' option on init process
+ """
+ self.sbd_devices_input = sbd_devices
+ self.diskless_sbd = diskless_sbd
+ self._sbd_service_flag = False
+ self._sbd_devices = None
+
+ @staticmethod
+ def _check_environment():
+ """
+ Check prerequisites for SBD
+ """
+ if not check_watchdog():
+ error("Watchdog device must be configured in order to use SBD")
+ if not utils.is_program("sbd"):
+ error("sbd executable not found! Cannot configure SBD")
+
+ def _parse_sbd_device(self):
+ """
+ Parse sbd devices, possible command line is like:
+ -s "/dev/sdb1;/dev/sdb2"
+ -s /dev/sdb1 -s /dev/sbd2
+ """
+ result_list = []
+ for dev in self.sbd_devices_input:
+ if ';' in dev:
+ result_list.extend(dev.strip(';').split(';'))
+ else:
+ result_list.append(dev)
+ return result_list
+
+ @staticmethod
+ def _verify_sbd_device(dev_list):
+ """
+ Verify sbd device
+ """
+ if len(dev_list) > 3:
+ raise ValueError("Maximum number of SBD device is 3")
+ for dev in dev_list:
+ if not is_block_device(dev):
+ raise ValueError("{} doesn't look like a block device".format(dev))
+
+ def _get_sbd_device_interactive(self):
+ """
+ Get sbd device on interactive mode
+ """
+ if _context.yes_to_all:
+ warn("Not configuring SBD (%s left untouched)." % (SYSCONFIG_SBD))
+ return
+
+ status(self.SBD_STATUS_DESCRIPTION)
+
+ if not confirm("Do you wish to use SBD?"):
+ warn("Not configuring SBD - STONITH will be disabled.")
+ return
+
+ self._check_environment()
+
+ configured_dev = self._get_sbd_device_from_config()
+ if configured_dev and not confirm("SBD is already configured to use {} - overwrite?".format(';'.join(configured_dev))):
+ return configured_dev
+
+ dev_list = []
+ dev_looks_sane = False
+ while not dev_looks_sane:
+ dev = prompt_for_string('Path to storage device (e.g. /dev/disk/by-id/...), or "none" for diskless sbd, use ";" as separator for multi path', r'none|\/.*')
+ if dev == "none":
+ self.diskless_sbd = True
+ return
+ dev_list = dev.strip(';').split(';')
+ try:
+ self._verify_sbd_device(dev_list)
+ except ValueError as err_msg:
+ print(term.render(clidisplay.error(str(err_msg))))
+ continue
+ for dev_item in dev_list:
+ warn("All data on {} will be destroyed!".format(dev_item))
+ if confirm('Are you sure you wish to use this device?'):
+ dev_looks_sane = True
+ else:
+ dev_looks_sane = False
+ break
+
+ return dev_list
+
+ def _get_sbd_device(self):
+ """
+ Get sbd device from options or interactive mode
+ """
+ dev_list = []
+ if self.sbd_devices_input:
+ dev_list = self._parse_sbd_device()
+ self._verify_sbd_device(dev_list)
+ self._check_environment()
+ elif self.diskless_sbd:
+ self._check_environment()
+ else:
+ dev_list = self._get_sbd_device_interactive()
+ self._sbd_devices = dev_list
+
+ def _initialize_sbd(self):
+ """
+ Initialize SBD device
+ """
+ if self.diskless_sbd:
+ return
+ for dev in self._sbd_devices:
+ if not invoke("sbd -d {} create".format(dev)):
+ error("Failed to initialize SBD device {}".format(dev))
+
+ def _update_configuration(self):
+ """
+ Update /etc/sysconfig/sbd
+ """
+ shutil.copyfile(self.SYSCONFIG_SBD_TEMPLATE, SYSCONFIG_SBD)
+ sbd_config_dict = {
+ "SBD_PACEMAKER": "yes",
+ "SBD_STARTMODE": "always",
+ "SBD_DELAY_START": "no",
+ "SBD_WATCHDOG_DEV": detect_watchdog_device()
+ }
+ if self._sbd_devices:
+ sbd_config_dict["SBD_DEVICE"] = ';'.join(self._sbd_devices)
+ utils.sysconfig_set(SYSCONFIG_SBD, **sbd_config_dict)
+ csync2_update(SYSCONFIG_SBD)
+
+ @staticmethod
+ def _get_sbd_device_from_config():
+ """
+ Gets currently configured SBD device, i.e. what's in /etc/sysconfig/sbd
+ """
+ conf = utils.parse_sysconfig(SYSCONFIG_SBD)
+ res = conf.get("SBD_DEVICE")
+ if res:
+ return res.strip(';').split(';')
+ else:
+ return None
+
+ def sbd_init(self):
+ """
+ Function sbd_init includes these steps:
+ 1. Get sbd device from options or interactive mode
+ 2. Initialize sbd device
+ 3. Write config file /etc/sysconfig/sbd
+ """
+ self._get_sbd_device()
+ if not self._sbd_devices and not self.diskless_sbd:
+ return
+ status_long("Initializing {}SBD...".format("diskless " if self.diskless_sbd else ""))
+ self._initialize_sbd()
+ self._update_configuration()
+ status_done()
+ # If process work through here, consider it's ready for enable service
+ self._sbd_service_flag = True
+
+ def manage_sbd_service(self):
+ """
+ Manage sbd service, running on both init and join process
+ """
+ if self._sbd_service_flag:
+ invoke("systemctl enable sbd.service")
+ else:
+ invoke("systemctl disable sbd.service")
+
+ def configure_sbd_resource(self):
+ """
+ Configure stonith-sbd resource and stonith-enabled property
+ """
+ if self._sbd_devices and self._get_sbd_device_from_config():
+ if not invoke("crm configure primitive stonith-sbd stonith:external/sbd pcmk_delay_max=30s"):
+ error("Can't create stonith-sbd primitive")
+ if not invoke("crm configure property stonith-enabled=true"):
+ error("Can't enable STONITH for SBD")
+ elif self.diskless_sbd:
+ if not invoke("crm configure property stonith-enabled=true stonith-watchdog-timeout=5s"):
+ error("Can't enable STONITH for diskless SBD")
+
+ def join_sbd(self, peer_host):
+ """
+ Function join_sbd running on join process only
+ On joining process, check whether peer node has enabled sbd.service
+ If so, check prerequisites of SBD and verify sbd device on join node
+ """
+ if not os.path.exists(SYSCONFIG_SBD):
+ return
+ if not invoke("ssh -o StrictHostKeyChecking=no root@{} systemctl is-enabled sbd.service".format(peer_host)):
+ return
+ self._check_environment()
+ dev_list = self._get_sbd_device_from_config()
+ if dev_list:
+ self._verify_sbd_device(dev_list)
+ status("Got {}SBD configuration".format("" if dev_list else "diskless "))
+ self._sbd_service_flag = True
+
_context = None
@@ -419,14 +639,6 @@ def probe_partitions():
status_done()
-def configured_sbd_device():
- """
- Gets currently configured SBD device, i.e. what's in /etc/sysconfig/sbd
- """
- conf = utils.parse_sysconfig(SYSCONFIG_SBD)
- return conf.get("SBD_DEVICE")
-
-
def check_tty():
"""
Check for pseudo-tty: Cannot display read prompts without a TTY (bnc#892702)
@@ -690,12 +902,7 @@ def init_cluster_local():
if pass_msg:
warn("You should change the hacluster password to something more secure!")
- # for cluster join, diskless_sbd flag is set in join_cluster() if
- # sbd is running on seed host
- if (configured_sbd_device() and _context.sbd_device) or _context.diskless_sbd:
- invoke("systemctl enable sbd.service")
- else:
- invoke("systemctl disable sbd.service")
+ _context.sbd_manager.manage_sbd_service()
start_service("pacemaker.service")
wait_for_cluster()
@@ -1206,8 +1413,7 @@ def is_block_device(dev):
from stat import S_ISBLK
try:
rc = S_ISBLK(os.stat(dev).st_mode)
- except OSError as msg:
- warn(msg)
+ except OSError:
return False
return rc
@@ -1360,42 +1566,6 @@ def check_watchdog():
return rc == 0
-def sysconfig_comment_out(scfile, key):
- """
- Comments out the given key in the sysconfig file
- """
- matcher = re.compile(r'^\s*{}\s*='.format(key))
- outp, ncomments = "", 0
- for line in scfile.readlines():
- if matcher.match(line):
- outp += '#' + line
- ncomments += 1
- else:
- outp += line
- return outp, ncomments
-
-
-def init_sbd_diskless():
- """
- Initialize SBD in diskless mode.
- """
- status_long("Initializing diskless SBD...")
- if os.path.isfile(SYSCONFIG_SBD):
- log("Overwriting {} with diskless configuration".format(SYSCONFIG_SBD))
- scfg, nmatches = sysconfig_comment_out(open(SYSCONFIG_SBD), "SBD_DEVICE")
- if nmatches > 0:
- utils.str2file(scfg, SYSCONFIG_SBD)
- else:
- log("Creating {} with diskless configuration".format(SYSCONFIG_SBD))
- utils.sysconfig_set(SYSCONFIG_SBD,
- SBD_PACEMAKER="yes",
- SBD_STARTMODE="always",
- SBD_DELAY_START="no",
- SBD_WATCHDOG_DEV=detect_watchdog_device())
- csync2_update(SYSCONFIG_SBD)
- status_done()
-
-
def init_sbd():
"""
Configure SBD (Storage-based fencing).
@@ -1403,108 +1573,7 @@ def init_sbd():
SBD can also run in diskless mode if no device
is configured.
"""
- def get_dev_list(dev_list):
- result_list = []
- for dev in dev_list:
- if ';' in dev:
- result_list.extend(dev.strip(';').split(';'))
- else:
- result_list.append(dev)
- return result_list
-
- # non-interactive case
- if _context.sbd_device:
- _context.sbd_device = get_dev_list(_context.sbd_device)
- if len(_context.sbd_device) > 3:
- error("Maximum number of SBD device is 3")
- for dev in _context.sbd_device:
- if not is_block_device(dev):
- error("{} doesn't look like a block device".format(dev))
- # diskless sbd
- elif _context.diskless_sbd:
- init_sbd_diskless()
- return
- # interactive case
- else:
- # SBD device not set up by init_storage (ocfs2 template) and
- # also not passed in as command line argument - prompt user
- if _context.yes_to_all:
- warn("Not configuring SBD (%s left untouched)." % (SYSCONFIG_SBD))
- return
- status("""
-Configure SBD:
- If you have shared storage, for example a SAN or iSCSI target,
- you can use it avoid split-brain scenarios by configuring SBD.
- This requires a 1 MB partition, accessible to all nodes in the
- cluster. The device path must be persistent and consistent
- across all nodes in the cluster, so /dev/disk/by-id/* devices
- are a good choice. Note that all data on the partition you
- specify here will be destroyed.
-""")
-
- if not confirm("Do you wish to use SBD?"):
- warn("Not configuring SBD - STONITH will be disabled.")
- # Comment out SBD devices if present
- if os.path.isfile(SYSCONFIG_SBD):
- scfg, nmatches = sysconfig_comment_out(open(SYSCONFIG_SBD), "SBD_DEVICE")
- if nmatches > 0:
- utils.str2file(scfg, SYSCONFIG_SBD)
- csync2_update(SYSCONFIG_SBD)
- return
-
- if not check_watchdog():
- error("Watchdog device must be configured if want to use SBD!")
-
- if utils.is_program("sbd") is None:
- error("sbd executable not found! Cannot configure SBD.")
-
- configured_dev = configured_sbd_device()
- if configured_dev:
- if not confirm("SBD is already configured to use %s - overwrite?" % (configured_dev)):
- return
-
- dev_looks_sane = False
- while not dev_looks_sane:
- dev = prompt_for_string('Path to storage device (e.g. /dev/disk/by-id/...), or "none", use ";" as separator for multi path', r'none|\/.*')
- if dev == "none":
- _context.diskless_sbd = True
- init_sbd_diskless()
- return
- dev_list = dev.strip(';').split(';')
- if len(dev_list) > 3:
- error("Maximum number of SBD device is 3")
- continue
- for dev_item in dev_list:
- if not is_block_device(dev_item):
- error("{} doesn't look like a block device".format(dev_item))
- dev_looks_sane = False
- break
- else:
- warn("All data on {} will be destroyed!".format(dev_item))
- if confirm('Are you sure you wish to use this device?'):
- dev_looks_sane = True
- else:
- dev_looks_sane = False
- break
-
- _context.sbd_device = dev_list
-
- # TODO: need to ensure watchdog is available
- # (actually, should work if watchdog unavailable, it'll just whine in the logs...)
- # TODO: what about timeouts for multipath devices?
- status_long('Initializing SBD...')
- for dev in _context.sbd_device:
- if not invoke("sbd -d %s create" % (dev)):
- error("Failed to initialize SBD device %s" % (dev))
- status_done()
-
- utils.sysconfig_set(SYSCONFIG_SBD,
- SBD_DEVICE=';'.join(_context.sbd_device),
- SBD_PACEMAKER="yes",
- SBD_STARTMODE="always",
- SBD_DELAY_START="no",
- SBD_WATCHDOG_DEV=detect_watchdog_device())
- csync2_update(SYSCONFIG_SBD)
+ _context.sbd_manager.sbd_init()
def init_cluster():
@@ -1528,15 +1597,7 @@ op_defaults op-options: timeout=600 record-pending=true
rsc_defaults rsc-options: resource-stickiness=1 migration-threshold=3
""")
- if configured_sbd_device() and _context.sbd_device:
- if not invoke("crm configure primitive stonith-sbd stonith:external/sbd pcmk_delay_max=30s"):
- error("Can't create stonith-sbd primitive")
- if not invoke("crm configure property stonith-enabled=true"):
- error("Can't enable STONITH for SBD")
- elif _context.diskless_sbd:
- # TODO: configure stonith-watchdog-timeout correctly
- if not invoke("crm configure property stonith-enabled=true stonith-watchdog-timeout=5s"):
- error("Can't enable STONITH for diskless SBD")
+ _context.sbd_manager.configure_sbd_resource()
def init_vgfs():
@@ -2007,10 +2068,7 @@ def join_cluster(seed_host):
csync2_update(corosync.conf())
invoke("ssh -o StrictHostKeyChecking=no root@{} corosync-cfgtool -R".format(seed_host))
- # if no SBD devices are configured,
- # check the existing cluster if the sbd service is enabled
- if not configured_sbd_device() and invoke("ssh -o StrictHostKeyChecking=no root@{} systemctl is-enabled sbd.service".format(seed_host)):
- _context.diskless_sbd = True
+ _context.sbd_manager.join_sbd(seed_host)
if ipv6_flag and not is_unicast:
# for ipv6 mcast
@@ -2264,6 +2322,7 @@ def bootstrap_init(context):
global _context
_context = context
_context.init_qdevice()
+ _context.init_sbd_manager()
stage = _context.stage
if stage is None:
@@ -2327,6 +2386,7 @@ def bootstrap_join(context):
"""
global _context
_context = context
+ _context.init_sbd_manager()
check_tty()
diff --git a/crmsh/ui_cluster.py b/crmsh/ui_cluster.py
index 37eb4072..caf527f1 100644
--- a/crmsh/ui_cluster.py
+++ b/crmsh/ui_cluster.py
@@ -252,7 +252,7 @@ Note:
storage_group = parser.add_argument_group("Storage configuration", "Options for configuring shared storage.")
storage_group.add_argument("-p", "--partition-device", dest="shared_device", metavar="DEVICE",
help='Partition this shared storage device (only used in "storage" stage)')
- storage_group.add_argument("-s", "--sbd-device", dest="sbd_device", metavar="DEVICE", action="append",
+ storage_group.add_argument("-s", "--sbd-device", dest="sbd_devices", metavar="DEVICE", action="append",
help="Block device to use for SBD fencing, use \";\" as separator or -s multiple times for multi path (up to 3 devices)")
storage_group.add_argument("-o", "--ocfs2-device", dest="ocfs2_device", metavar="DEVICE",
help='Block device to use for OCFS2 (only used in "vgfs" stage)')
--
2.21.1
1
0
Hello community,
here is the log from the commit of package wyrmsun for openSUSE:Leap:15.2 checked in at 2020-05-29 15:16:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/wyrmsun (Old)
and /work/SRC/openSUSE:Leap:15.2/.wyrmsun.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wyrmsun"
Fri May 29 15:16:20 2020 rev:10 rq:810065 version:3.5.4
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/wyrmsun/wyrmsun.changes 2020-01-15 16:29:47.264799562 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.wyrmsun.new.3606/wyrmsun.changes 2020-05-29 15:16:30.407141763 +0200
@@ -1,0 +2,12 @@
+Sun Mar 3 15:01:45 UTC 2019 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 3.5.4
+ * lots of new features and improvements
+ see /usr/share/doc/packages/wyrmsun/readme.txt for the full
+ changelog
+- Run spec-cleaner
+- Use cmake to install the game
+- Add patch:
+ * wyrmsun-dont-search-for-a-compiler.patch
+
+-------------------------------------------------------------------
Old:
----
Wyrmsun-2.8.1.tar.gz
New:
----
Wyrmsun-3.5.4.tar.gz
wyrmsun-dont-search-for-a-compiler.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ wyrmsun.spec ++++++
--- /var/tmp/diff_new_pack.YzlF5U/_old 2020-05-29 15:16:31.835146422 +0200
+++ /var/tmp/diff_new_pack.YzlF5U/_new 2020-05-29 15:16:31.839146434 +0200
@@ -1,7 +1,7 @@
#
# spec file for package wyrmsun
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,24 +12,27 @@
# 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: wyrmsun
-Version: 2.8.1
+Version: 3.5.4
Release: 0
Summary: Strategy game based on history, mythology and fiction
-License: GPL-2.0 and CC-BY-SA-3.0
+License: GPL-2.0-only AND CC-BY-SA-3.0
Group: Amusements/Games/Strategy/Real Time
-Url: https://andrettin.github.io/
+URL: https://andrettin.github.io/
Source: https://github.com/Andrettin/Wyrmsun/archive/v%{version}/Wyrmsun-%{version}…
+Patch0: wyrmsun-dont-search-for-a-compiler.patch
+BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: hicolor-icon-theme
+%if 0%{?suse_version} < 1330
BuildRequires: update-desktop-files
-BuildArch: noarch
+%endif
Requires: wyrmgus = %{version}
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildArch: noarch
%description
In the Wyrmsun universe a myriad of inhabited planets exist. Humans dwell on Earth,
@@ -39,21 +42,17 @@
%prep
%setup -q -n Wyrmsun-%{version}
+%patch0 -p1
%build
+%cmake
%install
-mkdir -p %{buildroot}%{_datadir}/wyrmsun
-cp -r * %{buildroot}%{_datadir}/wyrmsun
-
-install -Dm644 graphics/ui/icons/wyrmsun_icon_32.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/wyrmsun.png
-install -Dm644 graphics/ui/icons/wyrmsun_icon_128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/wyrmsun.png
-
-install -Dm644 linux/wyrmsun.desktop %{buildroot}%{_datadir}/applications/wyrmsun.desktop
-install -Dm644 linux/wyrmsun.appdata.xml %{buildroot}%{_datadir}/appdata/wyrmsun.appdata.xml
-
-%fdupes -s %{buildroot}%{_prefix}
+%cmake_install
+rm -Rf %{buildroot}%{_datadir}/doc/wyrmsun/
+%fdupes -s %{buildroot}%{_datadir}
+%if 0%{?suse_version} < 1330
%post
%desktop_database_post
%icon_theme_cache_post
@@ -61,14 +60,17 @@
%postun
%desktop_database_postun
%icon_theme_cache_postun
+%endif
%files
-%defattr(-,root,root)
-%doc license.txt readme.txt
+%license license.txt
+%doc readme.txt
+%doc "documents/Wyrmsun - Visual Guide.pdf"
+%{_bindir}/wyrmsun
%{_datadir}/wyrmsun
-%{_datadir}/icons/hicolor/*/apps/wyrmsun.png
-%{_datadir}/applications/wyrmsun.desktop
-%dir %{_datadir}/appdata/
-%{_datadir}/appdata/wyrmsun.appdata.xml
+%{_datadir}/icons/hicolor/*/apps/%{name}.png
+%{_datadir}/applications/%{name}.desktop
+%dir %{_datadir}/appdata
+%{_datadir}/appdata/%{name}.appdata.xml
%changelog
++++++ Wyrmsun-2.8.1.tar.gz -> Wyrmsun-3.5.4.tar.gz ++++++
/work/SRC/openSUSE:Leap:15.2/wyrmsun/Wyrmsun-2.8.1.tar.gz /work/SRC/openSUSE:Leap:15.2/.wyrmsun.new.3606/Wyrmsun-3.5.4.tar.gz differ: char 12, line 1
++++++ wyrmsun-dont-search-for-a-compiler.patch ++++++
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 91ef748..080ff3e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-project(wyrmsun)
+project(wyrmsun NONE)
cmake_minimum_required(VERSION 3.0)
set(DATADIR share/wyrmsun CACHE STRING "Where to install Wyrmsun data files")
1
0
Hello community,
here is the log from the commit of package libqt5-qtremoteobjects for openSUSE:Leap:15.2 checked in at 2020-05-29 15:16:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/libqt5-qtremoteobjects (Old)
and /work/SRC/openSUSE:Leap:15.2/.libqt5-qtremoteobjects.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtremoteobjects"
Fri May 29 15:16:14 2020 rev:20 rq:810070 version:5.12.7
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/libqt5-qtremoteobjects/libqt5-qtremoteobjects.changes 2020-01-15 15:24:25.146542946 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.libqt5-qtremoteobjects.new.3606/libqt5-qtremoteobjects.changes 2020-05-29 15:16:22.811116983 +0200
@@ -1,0 +2,8 @@
+Fri Jan 31 11:37:47 UTC 2020 - Fabian Vogt <fabian(a)ritter-vogt.de>
+
+- Update to 5.12.7:
+ * New bugfix release
+ * For more details please see:
+ http://code.qt.io/cgit/qt/qtremoteobjects.git/plain/dist/changes-5.12.7/?h=…
+
+-------------------------------------------------------------------
Old:
----
qtremoteobjects-everywhere-src-5.12.6.tar.xz
New:
----
qtremoteobjects-everywhere-src-5.12.7.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libqt5-qtremoteobjects.spec ++++++
--- /var/tmp/diff_new_pack.sY4PTH/_old 2020-05-29 15:16:23.275118497 +0200
+++ /var/tmp/diff_new_pack.sY4PTH/_new 2020-05-29 15:16:23.279118511 +0200
@@ -19,11 +19,11 @@
%define qt5_snapshot 0
%define libname libQt5RemoteObjects5
%define base_name libqt5
-%define real_version 5.12.6
-%define so_version 5.12.6
-%define tar_version qtremoteobjects-everywhere-src-5.12.6
+%define real_version 5.12.7
+%define so_version 5.12.7
+%define tar_version qtremoteobjects-everywhere-src-5.12.7
Name: libqt5-qtremoteobjects
-Version: 5.12.6
+Version: 5.12.7
Release: 0
Summary: Qt 5 RemoteObjects Library
License: LGPL-2.1-with-Qt-Company-Qt-exception-1.1 or LGPL-3.0-only
++++++ qtremoteobjects-everywhere-src-5.12.6.tar.xz -> qtremoteobjects-everywhere-src-5.12.7.tar.xz ++++++
++++ 9073 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package folder-color for openSUSE:Leap:15.2 checked in at 2020-05-29 15:16:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/folder-color (Old)
and /work/SRC/openSUSE:Leap:15.2/.folder-color.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "folder-color"
Fri May 29 15:16:11 2020 rev:10 rq:810034 version:0.0.88
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/folder-color/folder-color.changes 2020-01-15 14:55:23.793587572 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.folder-color.new.3606/folder-color.changes 2020-05-29 15:16:19.687106790 +0200
@@ -1,0 +2,17 @@
+Sat Feb 22 15:48:43 UTC 2020 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 0.0.88 (changes since 0.0.79):
+ * Extended colours.
+ * Work with SVG and PNG.
+ * Migrate to Gio.
+ * Fix for a few themes (lp#1703103).
+ * Add tick icon.
+ * File's emblem.
+ * Menu with directory and file.
+ * Fixed dumps in shell.
+ * Python 3 compatibility (lp#1826627).
+ * Update translations.
+- Add a Nemo package.
+- Switch to Python 3.
+
+-------------------------------------------------------------------
Old:
----
folder-color-caja_0.0.79.orig.tar.gz
folder-color-common_0.0.79.orig.tar.gz
folder-color_0.0.79.orig.tar.gz
New:
----
folder-color-caja_0.0.88.tar.gz
folder-color-common_0.0.88.tar.gz
folder-color-nemo_0.0.88.tar.gz
folder-color_0.0.88.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ folder-color.spec ++++++
--- /var/tmp/diff_new_pack.MAoWGr/_old 2020-05-29 15:16:21.455112560 +0200
+++ /var/tmp/diff_new_pack.MAoWGr/_new 2020-05-29 15:16:21.459112573 +0200
@@ -1,7 +1,7 @@
#
# spec file for package folder-color
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,31 +12,45 @@
# 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 _name folder_color
Name: folder-color
-Version: 0.0.79
+Version: 0.0.88
Release: 0
-Summary: Change a directory colour in Caja and Nautilus
-License: GPL-3.0+
+Summary: Change a directory colour in Caja, Nautilus and Nemo
+License: GPL-3.0-or-later
Group: Productivity/File utilities
-Url: https://launchpad.net/folder-color
-Source0: http://archive.ubuntu.com/ubuntu/pool/universe/f/%{name}-common/%{name}-com…
-Source1: http://archive.ubuntu.com/ubuntu/pool/universe/f/%{name}-caja/%{name}-caja_…
-Source2: http://archive.ubuntu.com/ubuntu/pool/universe/f/%{name}/%{name}_%{version}…
+URL: https://launchpad.net/folder-color
+Source: https://launchpad.net/~costales/+archive/ubuntu/folder-color/+files/%{name}…
+Source1: https://launchpad.net/~costales/+archive/ubuntu/folder-color/+files/%{name}…
+Source2: https://launchpad.net/~costales/+archive/ubuntu/folder-color/+files/%{name}…
+Source3: https://launchpad.net/~costales/+archive/ubuntu/folder-color/+files/%{name}…
BuildRequires: fdupes
BuildRequires: hicolor-icon-theme
BuildRequires: intltool
-BuildRequires: python
-BuildRequires: python-distutils-extra
+BuildRequires: python3
+BuildRequires: python3-distutils-extra
BuildArch: noarch
%description
Change a directory colour, then get better visual layout.
+%package -n nautilus-extension-%{name}
+Summary: Change a directory colour in Nautilus
+Group: Productivity/File utilities
+Requires: %{name}-common = %{version}
+Requires: nautilus
+Requires: python3-nautilus
+# folder-color-nautilus was last used in openSUSE Leap 42.1.
+Provides: %{name}-nautilus = %{version}
+Obsoletes: %{name}-nautilus < %{version}
+
+%description -n nautilus-extension-%{name}
+Change a directory colour, then get better visual layout.
+
%package -n caja-extension-%{name}
Summary: Change a directory colour in Caja
Group: Productivity/File utilities
@@ -50,21 +64,18 @@
%description -n caja-extension-%{name}
Change a directory colour, then get better visual layout.
-%package -n nautilus-extension-%{name}
-Summary: Change a directory colour in Nautilus
+%package -n nemo-extension-%{name}
+Summary: Change a directory colour in Nemo
Group: Productivity/File utilities
Requires: %{name}-common = %{version}
-Requires: nautilus
-Requires: python-nautilus
-# folder-color-nautilus was last used in openSUSE Leap 42.1.
-Provides: %{name}-nautilus = %{version}
-Obsoletes: %{name}-nautilus < %{version}
+Requires: nemo
+Requires: python-nemo
-%description -n nautilus-extension-%{name}
+%description -n nemo-extension-%{name}
Change a directory colour, then get better visual layout.
%package common
-Summary: Change a directory colour in Caja and Nautilus
+Summary: Change a directory colour in Caja, Nautilus and Nemo
Group: Productivity/File utilities
Requires: gtk3-tools
Requires: gvfs
@@ -76,52 +87,47 @@
%lang_package -n %{name}-common
%prep
-%setup -q -n %{name}-common
-%setup -q -D -T -a 1 -n %{name}-common
-%setup -q -D -T -a 2 -n %{name}-common
-mv -f nautilus %{name}-nautilus
+%setup -q -n common
+%setup -q -D -T -a 1 -n common
+%setup -q -D -T -a 2 -n common
+%setup -q -D -T -a 3 -n common
-chmod a-x COPYING
-sed -i '/name/s/%{name}/%{name}-nautilus/' %{name}-nautilus/setup.py
+chmod a-x COPYING.GPL3
+sed -i '/name/s/%{name}/%{name}-nautilus/' nautilus/setup.py
%build
# Nothing to build.
%install
-for dir in . %{name}-caja %{name}-nautilus; do
+for dir in . nautilus caja nemo; do
pushd $dir
- python2 setup.py install \
+ python3 setup.py install \
--root=%{buildroot} --prefix=%{_prefix}
popd
done
%fdupes %{buildroot}%{_datadir}
%find_lang %{name}-common
-%post common
-%icon_theme_cache_post
-
-%postun common
-%icon_theme_cache_postun
+%files -n nautilus-extension-%{name}
+%license COPYING.GPL3
+%{_datadir}/nautilus-python/
+%{python3_sitelib}/%{_name}_nautilus-*
%files -n caja-extension-%{name}
-%defattr(-,root,root)
-%doc COPYING
+%license COPYING.GPL3
%{_datadir}/caja-python/
-%{python_sitelib}/%{_name}_caja-*
+%{python3_sitelib}/%{_name}_caja-*
-%files -n nautilus-extension-%{name}
-%defattr(-,root,root)
-%doc COPYING
-%{_datadir}/nautilus-python/
-%{python_sitelib}/%{_name}_nautilus-*
+%files -n nemo-extension-%{name}
+%license COPYING.GPL3
+%{_datadir}/nemo-python/
+%{python3_sitelib}/%{_name}_nemo-*
%files common
-%defattr(-,root,root)
-%doc COPYING
-%{python_sitelib}/%{_name}_common-*
+%license COPYING.GPL3
+%{python3_sitelib}/%{_name}_common-*
%{_datadir}/icons/hicolor/*/*/
%files common-lang -f %{name}-common.lang
-%defattr(-,root,root)
%changelog
++++++ folder-color-caja_0.0.79.orig.tar.gz -> folder-color-caja_0.0.88.tar.gz ++++++
++++ 2726 lines of diff (skipped)
++++++ folder-color-common_0.0.79.orig.tar.gz -> folder-color-common_0.0.88.tar.gz ++++++
++++ 50809 lines of diff (skipped)
++++++ folder-color_0.0.79.orig.tar.gz -> folder-color_0.0.88.tar.gz ++++++
++++ 2677 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package desktop-translations for openSUSE:Leap:15.2 checked in at 2020-05-29 15:16:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/desktop-translations (Old)
and /work/SRC/openSUSE:Leap:15.2/.desktop-translations.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "desktop-translations"
Fri May 29 15:16:08 2020 rev:36 rq:809964 version:84.87.20200514.83985bf7
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/desktop-translations/desktop-translations.changes 2020-01-15 14:52:09.857479199 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.desktop-translations.new.3606/desktop-translations.changes 2020-05-29 15:16:15.695093760 +0200
@@ -1,0 +2,193 @@
+Thu May 28 13:48:52 UTC 2020 - opensuse-packaging(a)opensuse.org
+
+- Update to version 84.87.20200514.83985bf7:
+ * Translations for openSUSE Leap 15.2 RC poo#61278
+ * Translated using Weblate (Portuguese (Brazil))
+ * Translated using Weblate (Indonesian)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Swedish)
+ * Translated using Weblate (Italian)
+ * Translated using Weblate (Indonesian)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (English (United Kingdom))
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Arabic)
+ * Translated using Weblate (Indonesian)
+
+-------------------------------------------------------------------
+Thu Mar 12 03:42:44 UTC 2020 - opensuse-packaging(a)opensuse.org
+
+- Update to version 84.87.20200312.febbb097:
+ * Add two TODO notes to generate_and_merge_pos.sh
+ * Drop en_US (boo#1139962, bsc#1163437).
+ * README.md: Document the process of update
+ * Translated using Weblate (Belarusian)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Chinese (China))
+ * Translated using Weblate (Czech)
+ * Translated using Weblate (Danish)
+ * Translated using Weblate (Dutch)
+ * Translated using Weblate (Estonian)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Greek)
+ * Translated using Weblate (Indonesian)
+ * Translated using Weblate (Japanese)
+ * Translated using Weblate (Portuguese (Brazil))
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Spanish)
+ * Translated using Weblate (Turkish)
+ * Translated using Weblate (Vietnamese)
+ * Update strings from Leap 15.2.
+
+-------------------------------------------------------------------
+Tue Sep 24 10:00:12 UTC 2019 - opensuse-packaging(a)opensuse.org
+
+- Update to version 84.87.20190924.7050555c:
+ * Unfuzzy YaST groups translations
+ * fix typo
+ * Translated using Weblate (Japanese)
+ * Translated using Weblate (Japanese)
+ * Translated using Weblate (Japanese)
+ * Translated using Weblate (German)
+- The following bug was referenced in SLE 15:
+ * boo#1037823
+
+-------------------------------------------------------------------
+Mon Sep 23 15:24:36 UTC 2019 - opensuse-packaging(a)opensuse.org
+
+- Update to version 84.87.20190923.8ea56c56:
+ * Regenerate .po files after some more search-replace for YaST
+ * Run update-po-files.sh after Leap 15.2 update
+ * Update for Leap 15.2 (boo#1145197, bsc#1146886)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Polish)
+ * Translated using Weblate (Polish)
+ * Translated using Weblate (Polish)
+ * Translated using Weblate (Italian)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Portuguese (Brazil))
+ * Translated using Weblate (Portuguese (Brazil))
+ * Drop "translation" from English to English
+ * Remove Indonesian from en_US files
+ * Translated using Weblate (German)
+ * Translated using Weblate (Portuguese (Brazil))
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Chinese (China))
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Chinese (China))
+ * Translated using Weblate (Chinese (China))
+ * Translated using Weblate (Chinese (China))
+ * Translated using Weblate (Chinese (China))
+ * Translated using Weblate (German)
+ * Translated using Weblate (Chinese (China))
+ * Translated using Weblate (Chinese (China))
+ * Translated using Weblate (Chinese (China))
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Portuguese)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (French)
+ * Translated using Weblate (French)
+ * Translated using Weblate (French)
+ * Translated using Weblate (Portuguese)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Dutch)
+ * Translated using Weblate (Dutch)
+ * Translated using Weblate (Dutch)
+ * Translated using Weblate (Czech)
+ * Translated using Weblate (Czech)
+ * Translated using Weblate (Japanese)
+ * Translated using Weblate (Dutch)
+ * Update all po files
+ * Translated using Weblate (German)
+ * Translated using Weblate (Chinese (China))
+ * Update update-desktop-files-yast.po
+ * Translated using Weblate (Turkish)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Lao)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Occidental)
+ * Added translation using Weblate (Occidental)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Italian)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Dutch)
+ * Translated using Weblate (Dutch)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Occidental)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Arabic)
+ * Translated using Weblate (Occidental)
+ * Translated using Weblate (Spanish)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Portuguese (Brazil))
+ * Translated using Weblate (Japanese)
+ * Translated using Weblate (Czech)
+ * Translated using Weblate (Czech)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Portuguese (Brazil))
+ * Translated using Weblate (Chinese (China))
+ * Translated using Weblate (Arabic)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Slovak)
+ * Translated using Weblate (Japanese)
+ * Added translation using Weblate (Occidental)
+ * Translated using Weblate (Slovak)
+ * Added translation using Weblate (Occidental)
+ * Translated using Weblate (Slovak)
+
+-------------------------------------------------------------------
Old:
----
desktop-file-translations-84.87.20190508.853b49d2.tar.xz
New:
----
desktop-file-translations-84.87.20200514.83985bf7.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ desktop-translations.spec ++++++
--- /var/tmp/diff_new_pack.lv0fMa/_old 2020-05-29 15:16:16.327095825 +0200
+++ /var/tmp/diff_new_pack.lv0fMa/_new 2020-05-29 15:16:16.331095838 +0200
@@ -1,7 +1,7 @@
#
# spec file for package desktop-translations
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,12 +17,12 @@
Name: desktop-translations
-Version: 84.87.20190508.853b49d2
+Version: 84.87.20200514.83985bf7
Release: 0
Summary: Desktop Files Translations
License: MIT
Group: System/GUI/Other
-Url: https://github.com/openSUSE/desktop-file-translations
+URL: https://github.com/openSUSE/desktop-file-translations
Source0: desktop-file-translations-%{version}.tar.xz
Supplements: bundle-lang-other
Supplements: gtk2
@@ -31,7 +31,7 @@
Supplements: libkde4
Supplements: plasma5-desktop
Supplements: yast2-control-center
-Provides: locale(af;ar;bg;be;bn;bs;ca;cs;cy;da;de;el;en_GB;en_US;eo;es;et;fi;fr;gl;gu;he;hi;hr;hu;id;it;ja;ka;kab;km;ko;lo;lt;mk;mr;nb;nl;pa;pl;pt;ro;ru;si;sk;sl;sr;sr@Latn;sv;ta;tr;uk;vi;wa;xh;zh_CN;zh_TW;zu)
+Provides: locale(af;ar;bg;be;bn;bs;ca;cs;cy;da;de;el;en_GB;eo;es;et;fi;fr;gl;gu;he;hi;hr;hu;id;it;ja;ka;kab;km;ko;lo;lt;mk;mr;nb;nl;pa;pl;pt;ro;ru;si;sk;sl;sr;sr@Latn;sv;ta;tr;uk;vi;wa;xh;zh_CN;zh_TW;zu)
BuildRequires: gettext-runtime
BuildRequires: xz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.lv0fMa/_old 2020-05-29 15:16:16.411096099 +0200
+++ /var/tmp/diff_new_pack.lv0fMa/_new 2020-05-29 15:16:16.411096099 +0200
@@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/openSUSE/desktop-file-translations.git</param>
- <param name="changesrevision">853b49d2cc4610d822e94c9d1ae80187eb2501ed</param></service></servicedata>
\ No newline at end of file
+ <param name="changesrevision">83985bf71432d267070c5d77b0f74ef9f80cb9bb</param></service></servicedata>
\ No newline at end of file
++++++ desktop-file-translations-84.87.20190508.853b49d2.tar.xz -> desktop-file-translations-84.87.20200514.83985bf7.tar.xz ++++++
/work/SRC/openSUSE:Leap:15.2/desktop-translations/desktop-file-translations-84.87.20190508.853b49d2.tar.xz /work/SRC/openSUSE:Leap:15.2/.desktop-translations.new.3606/desktop-file-translations-84.87.20200514.83985bf7.tar.xz differ: char 26, line 1
1
0
Hello community,
here is the log from the commit of package tensorflow for openSUSE:Leap:15.2 checked in at 2020-05-29 15:16:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/tensorflow (Old)
and /work/SRC/openSUSE:Leap:15.2/.tensorflow.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tensorflow"
Fri May 29 15:16:04 2020 rev:5 rq:809856 version:1.15.2
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/tensorflow/tensorflow.changes 2020-03-27 16:46:35.199879127 +0100
+++ /work/SRC/openSUSE:Leap:15.2/.tensorflow.new.3606/tensorflow.changes 2020-05-29 15:16:12.439083136 +0200
@@ -1,0 +2,7 @@
+Tue May 26 08:03:16 UTC 2020 - Christian Goll <cgoll(a)suse.com>
+
+- fixed broken builds which were caused due to missing dependency
+ on @com_google_absl//absl/strings in various BUILD files
+- added patch: fix-google-absl-memory.patch
+
+-------------------------------------------------------------------
New:
----
fix-google-absl-memory.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tensorflow.spec ++++++
--- /var/tmp/diff_new_pack.FZDrGg/_old 2020-05-29 15:16:13.619086985 +0200
+++ /var/tmp/diff_new_pack.FZDrGg/_new 2020-05-29 15:16:13.619086985 +0200
@@ -168,6 +168,7 @@
Patch3: Fix-build-failures-for-python-3.8.patch
Patch4: Fix-TensorFlow-on-Python-3.8-logger-issue.patch
Patch5: fix-mpi-build.patch
+Patch6: fix-google-absl-memory.patch
# only for TW right now
Patch10: json-feature-name.patch
@@ -415,6 +416,7 @@
%if %{with mpi}
%patch5 -p 1
%endif
+%patch6 -p 1
%if 0%{?suse_version} > 1500
%patch10 -p 1
%endif
++++++ fix-google-absl-memory.patch ++++++
>From 98cb8d3e4a1f3b6f41bdeea5a8596fa31685237d Mon Sep 17 00:00:00 2001
From: Christian Goll <cgoll(a)suse.de>
Date: Tue, 26 May 2020 09:45:35 +0200
Subject: [PATCH] fix google absl memory bazel fails when dependency of
@com_google_absl//absl/memory is added without @com_google_absl//absl/strings
---
tensorflow/lite/python/interpreter_wrapper/BUILD | 1 +
tensorflow/lite/tools/optimize/BUILD | 4 ++++
tensorflow/lite/tools/optimize/calibration/BUILD | 4 ++++
3 files changed, 9 insertions(+)
diff --git a/tensorflow/lite/python/interpreter_wrapper/BUILD b/tensorflow/lite/python/interpreter_wrapper/BUILD
index 476f9390e5..98accf15a0 100644
--- a/tensorflow/lite/python/interpreter_wrapper/BUILD
+++ b/tensorflow/lite/python/interpreter_wrapper/BUILD
@@ -31,6 +31,7 @@ cc_library(
"//tensorflow/lite/kernels:builtin_ops",
"//third_party/python_runtime:headers",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
],
)
diff --git a/tensorflow/lite/tools/optimize/BUILD b/tensorflow/lite/tools/optimize/BUILD
index f9ef0d02e5..fb68eab5fc 100644
--- a/tensorflow/lite/tools/optimize/BUILD
+++ b/tensorflow/lite/tools/optimize/BUILD
@@ -26,6 +26,7 @@ cc_library(
"//tensorflow/lite/schema:schema_fbs",
"//third_party/eigen3",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
],
)
@@ -40,6 +41,7 @@ cc_library(
"//tensorflow/lite/kernels/internal:types",
"//tensorflow/lite/schema:schema_fbs",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
],
)
@@ -94,6 +96,7 @@ tf_cc_test(
"//tensorflow/lite:framework",
"//tensorflow/lite/schema:schema_fbs",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@flatbuffers",
],
@@ -107,6 +110,7 @@ cc_library(
":quantization_utils",
":model_utils",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
"@com_google_absl//absl/container:flat_hash_map",
"@flatbuffers",
"//tensorflow/lite:framework",
diff --git a/tensorflow/lite/tools/optimize/calibration/BUILD b/tensorflow/lite/tools/optimize/calibration/BUILD
index c65f05587e..c029af83bf 100644
--- a/tensorflow/lite/tools/optimize/calibration/BUILD
+++ b/tensorflow/lite/tools/optimize/calibration/BUILD
@@ -25,6 +25,7 @@ cc_library(
"//tensorflow/lite/kernels:builtin_ops",
"//tensorflow/lite/schema:schema_fbs",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
"@flatbuffers",
],
)
@@ -49,6 +50,7 @@ tf_cc_test(
"//tensorflow/lite:framework",
"//tensorflow/lite/kernels:builtin_ops",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
],
)
@@ -62,6 +64,7 @@ cc_library(
"//tensorflow/lite:framework",
"//tensorflow/lite/core/api",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
],
)
@@ -84,6 +87,7 @@ cc_library(
":calibration_logger",
"//tensorflow/lite:framework",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
],
)
--
2.25.0
1
0
Hello community,
here is the log from the commit of package tensorflow2 for openSUSE:Leap:15.2 checked in at 2020-05-29 15:16:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/tensorflow2 (Old)
and /work/SRC/openSUSE:Leap:15.2/.tensorflow2.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tensorflow2"
Fri May 29 15:16:00 2020 rev:6 rq:809855 version:2.1.0
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/tensorflow2/tensorflow2.changes 2020-04-12 15:38:04.333997637 +0200
+++ /work/SRC/openSUSE:Leap:15.2/.tensorflow2.new.3606/tensorflow2.changes 2020-05-29 15:16:09.827074615 +0200
@@ -1,0 +2,7 @@
+Mon May 25 15:44:40 UTC 2020 - Christian Goll <cgoll(a)suse.com>
+
+- fixed broken builds which were caused due to missing dependency
+ on @com_google_absl//absl/strings in various BUILD files
+- added patch: fix-google-absl-memory.patch
+
+-------------------------------------------------------------------
New:
----
fix-google-absl-memory.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tensorflow2.spec ++++++
--- /var/tmp/diff_new_pack.9enC23/_old 2020-05-29 15:16:11.551080239 +0200
+++ /var/tmp/diff_new_pack.9enC23/_new 2020-05-29 15:16:11.555080252 +0200
@@ -179,6 +179,7 @@
Patch13: remove-weakref.patch
Patch14: fix-lite.patch
Patch17: json-feature-name.patch
+Patch18: fix-google-absl-memory.patch
Requires: python3
Requires: python3-Keras-Applications
@@ -451,6 +452,7 @@
%if 0%{?suse_version} > 1500
%patch17 -p 1
%endif
+%patch18 -p 1
%if %{is_lite}
mkdir tensorflow/lite/tools/make/downloads/
++++++ fix-google-absl-memory.patch ++++++
>From 501c631ba6c10c0dc91193aca45f23a617f6f036 Mon Sep 17 00:00:00 2001
From: Christian Goll <cgoll(a)suse.de>
Date: Mon, 25 May 2020 17:35:00 +0200
Subject: [PATCH] fix google absl memory bazel fails when dependency of
@com_google_absl//absl/memory is added without @com_google_absl//absl/strings
---
tensorflow/lite/kernels/BUILD | 1 +
tensorflow/lite/tools/optimize/BUILD | 5 +++++
tensorflow/lite/tools/optimize/calibration/BUILD | 4 ++++
3 files changed, 10 insertions(+)
diff --git a/tensorflow/lite/kernels/BUILD b/tensorflow/lite/kernels/BUILD
index f717c785dc..656bb69a01 100644
--- a/tensorflow/lite/kernels/BUILD
+++ b/tensorflow/lite/kernels/BUILD
@@ -539,6 +539,7 @@ cc_library(
"//tensorflow/lite/kernels/internal:types",
"//third_party/eigen3",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
"@farmhash_archive//:farmhash",
"@flatbuffers",
],
diff --git a/tensorflow/lite/tools/optimize/BUILD b/tensorflow/lite/tools/optimize/BUILD
index ff5ebbd979..d1a264502e 100644
--- a/tensorflow/lite/tools/optimize/BUILD
+++ b/tensorflow/lite/tools/optimize/BUILD
@@ -37,6 +37,7 @@ tf_cc_test(
"//tensorflow/lite:framework",
"//tensorflow/lite/schema:schema_fbs",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@flatbuffers",
],
@@ -59,6 +60,7 @@ cc_library(
"//tensorflow/lite/schema:schema_fbs",
"//third_party/eigen3",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
],
)
@@ -73,6 +75,7 @@ cc_library(
"//tensorflow/lite/kernels/internal:types",
"//tensorflow/lite/schema:schema_fbs",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
],
)
@@ -128,6 +131,7 @@ tf_cc_test(
"//tensorflow/lite/schema:schema_fbs",
"//tensorflow/lite/testing:util",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
"@flatbuffers",
],
@@ -141,6 +145,7 @@ cc_library(
":quantization_utils",
":model_utils",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
"@com_google_absl//absl/container:flat_hash_map",
"@flatbuffers",
"//tensorflow/lite:framework",
diff --git a/tensorflow/lite/tools/optimize/calibration/BUILD b/tensorflow/lite/tools/optimize/calibration/BUILD
index be7156d54e..3a3d211684 100644
--- a/tensorflow/lite/tools/optimize/calibration/BUILD
+++ b/tensorflow/lite/tools/optimize/calibration/BUILD
@@ -25,6 +25,7 @@ cc_library(
"//tensorflow/lite/kernels:builtin_ops",
"//tensorflow/lite/schema:schema_fbs",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
"@flatbuffers",
],
)
@@ -49,6 +50,7 @@ tf_cc_test(
"//tensorflow/lite:framework",
"//tensorflow/lite/kernels:builtin_ops",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
"@com_google_googletest//:gtest",
],
)
@@ -62,6 +64,7 @@ cc_library(
"//tensorflow/lite:framework",
"//tensorflow/lite/core/api",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
],
)
@@ -84,6 +87,7 @@ cc_library(
":calibration_logger",
"//tensorflow/lite:framework",
"@com_google_absl//absl/memory",
+ "@com_google_absl//absl/strings",
],
)
--
2.25.0
1
0