openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
September 2021
- 1 participants
- 2316 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libbpf for openSUSE:Factory checked in at 2021-09-30 23:43:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libbpf (Old)
and /work/SRC/openSUSE:Factory/.libbpf.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libbpf"
Thu Sep 30 23:43:03 2021 rev:7 rq:921812 version:0.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/libbpf/libbpf.changes 2021-09-25 00:35:40.223146666 +0200
+++ /work/SRC/openSUSE:Factory/.libbpf.new.2443/libbpf.changes 2021-09-30 23:43:37.372485009 +0200
@@ -1,0 +2,38 @@
+Mon Sep 27 11:02:49 UTC 2021 - Shung-Hsi Yu <shung-hsi.yu(a)suse.com>
+
+- Update to 0.5.0:
+ + New features and user-space APIs:
+ - libbpf_set_strict_mode() allowing to opt-in into backwards incompatible libbpf-1.0 changes. See "Libbpf: the road to 1.0" and "Libbpf 1.0 migration guide" for more details.
+ - streamlined error reporting for low-level APIs, high-level error-returning APIs, and pointer-returning APIs (as a libbpf-1.0 opt-in);
+ - "Light" BPF skeleton support;
+ - BPF_PROG_TYPE_SYSCALL support;
+ - BPF perf link support for kprobe, uprobe, tracepoint, and perf_event BPF programs;
+ - BPF cookie support for kprobe, uprobe, tracepoint, and perf_event BPF programs through bpf_program__attach_[ku]probe_opts() APIs;
+ - allow to specify ref_ctr_off for USDT semaphores through bpf_program__attach_uprobe_opts() API;
+ - btf_custom_path support in bpf_object_open_opts, allowing to specify custom BTF for CO-RE relocations;
+ - sk_reuseport/migrate program type support;
+ - btf_dump__dump_type_data() API, allowing to dump binary data according to BTF type description;
+ - btf__load_into_kernel() and btf__load_from_kernel_by_id(), and split BTF variants of them;
+ - btf__load_vmlinux_btf() and btf__load_module_btf() APIs;
+ - bpf_map__initial_value() API to get initial value of mmap-ed BPF maps;
+ - bpf_map_lookup_and_delete_elem_flags() API.
+ + BPF-side APIs and features:
+ - support for weak typed __ksym externs;
+ - BPF timer helpers: bpf_timer_init(), bpf_timer_set_callback(), bpf_timer_start(), bpf_timer_cancel();
+ - bpf_get_attach_cookie() helper to get BPF cookie from BPF program side;
+ - bpf_get_func_ip() helper;
+ - bpf_sys_bpf() helper;
+ - bpf_task_pt_regs() helper;
+ - bpf_btf_find_by_name_kind() helper;
+ - usability improvements for bpf_tracing.h when target architecture is missing.
+ + Bug fixes and compatibility improvements:
+ - improve BPF support detection on old Red Hat kernels with backported BPF patches;
+ - improvements for LTO builds with GCC 10+;
+ - pass NLM_F_EXCL when creating TC qdisc;
+ - better support of BPF map reuse on old kernels;
+ - fix the bug resulting in sometimes closing FD 0, which wasn't created and owned by libbpf itself.
+- Remove patches merged upstream
+ + libdir.patch
+ + libbpf-Fix-build-with-latest-gcc-binutils-with-LTO.patch
+
+-------------------------------------------------------------------
Old:
----
libbpf-0.4.0.tar.gz
libbpf-Fix-build-with-latest-gcc-binutils-with-LTO.patch
libdir.patch
New:
----
libbpf-0.5.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libbpf.spec ++++++
--- /var/tmp/diff_new_pack.9gsHV4/_old 2021-09-30 23:43:37.872485582 +0200
+++ /var/tmp/diff_new_pack.9gsHV4/_new 2021-09-30 23:43:37.872485582 +0200
@@ -19,17 +19,13 @@
%define sover_major 0
%define libname libbpf%{sover_major}
Name: libbpf
-Version: 0.4.0
+Version: 0.5.0
Release: 0
Summary: C library for managing eBPF programs and maps
License: LGPL-2.1-only
URL: https://github.com/libbpf/libbpf
Source: https://github.com/libbpf/libbpf/archive/v%{version}.tar.gz#/%{name}-%{vers…
Source99: baselibs.conf
-# PATCH-FIX-UPSTREAM https://github.com/libbpf/libbpf/issues/337
-Patch: libdir.patch
-# PATCH-FIX-UPSTREAM https://github.com/libbpf/libbpf/pull/373
-Patch1: libbpf-Fix-build-with-latest-gcc-binutils-with-LTO.patch
BuildRequires: libelf-devel
BuildRequires: linux-glibc-devel >= 4.5
BuildRequires: python3
++++++ libbpf-0.4.0.tar.gz -> libbpf-0.5.0.tar.gz ++++++
++++ 120598 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package openSUSE-build-key for openSUSE:Factory checked in at 2021-09-30 23:43:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-build-key (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-build-key.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-build-key"
Thu Sep 30 23:43:02 2021 rev:32 rq:921797 version:1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/openSUSE-build-key/openSUSE-build-key.changes 2021-06-11 22:31:08.122178172 +0200
+++ /work/SRC/openSUSE:Factory/.openSUSE-build-key.new.2443/openSUSE-build-key.changes 2021-09-30 23:43:36.564484083 +0200
@@ -1,0 +2,6 @@
+Mon Sep 27 12:59:34 UTC 2021 - Dominique Leuenberger <dimstar(a)opensuse.org>
+
+- Only add openSUSE Backports key when building for a Leap system
+ (sle_version > 0). Tumbleweed does not use Backports.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-build-key.spec ++++++
--- /var/tmp/diff_new_pack.CtwUBX/_old 2021-09-30 23:43:37.132484734 +0200
+++ /var/tmp/diff_new_pack.CtwUBX/_new 2021-09-30 23:43:37.132484734 +0200
@@ -72,7 +72,10 @@
%install
mkdir -p %{buildroot}%{keydir}
-for i in %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE9} \
+for i in %{SOURCE0} %{SOURCE1} %{SOURCE2} \
+%if 0%{?sle_version}
+%{SOURCE9} \
+%endif
%ifarch riscv64
%{SOURCE3} \
%endif
@@ -102,7 +105,9 @@
%{keydir}/gpg-pubkey-307e3d54-5aaa90a5.asc
%{keydir}/gpg-pubkey-3dbdc284-53674dd4.asc
%{keydir}/gpg-pubkey-39db7c82-5f68629b.asc
+%if 0%{?sle_version}
%{keydir}/gpg-pubkey-65176565-5d94a381.asc
+%endif
%{containerkeydir}/opensuse-container-key.asc
%{containerkeydir}/suse-container-key.asc
%ifarch riscv64
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package product-builder for openSUSE:Factory checked in at 2021-09-30 23:43:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/product-builder (Old)
and /work/SRC/openSUSE:Factory/.product-builder.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "product-builder"
Thu Sep 30 23:43:02 2021 rev:41 rq:921794 version:1.4.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/product-builder/product-builder.changes 2021-09-20 23:32:09.915100347 +0200
+++ /work/SRC/openSUSE:Factory/.product-builder.new.2443/product-builder.changes 2021-09-30 23:43:35.500482865 +0200
@@ -1,0 +2,6 @@
+Mon Sep 27 13:02:28 UTC 2021 - Adrian Schr��ter <adrian(a)suse.de>
+
+- 1.4.6
+ * fixed package tracking regression
+
+-------------------------------------------------------------------
Old:
----
product-builder-1.4.4.obscpio
New:
----
product-builder-1.4.6.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ product-builder.spec ++++++
--- /var/tmp/diff_new_pack.JOpgxv/_old 2021-09-30 23:43:35.980483415 +0200
+++ /var/tmp/diff_new_pack.JOpgxv/_new 2021-09-30 23:43:35.980483415 +0200
@@ -23,7 +23,7 @@
Name: product-builder
Conflicts: kiwi
Conflicts: kiwi-instsource
-Version: 1.4.4
+Version: 1.4.6
Release: 0
Provides: kiwi-schema = 6.2
Source: product-builder-%version.tar.xz
++++++ _service ++++++
--- /var/tmp/diff_new_pack.JOpgxv/_old 2021-09-30 23:43:36.004483442 +0200
+++ /var/tmp/diff_new_pack.JOpgxv/_new 2021-09-30 23:43:36.008483447 +0200
@@ -1,8 +1,8 @@
<services>
<service name="obs_scm" mode="manual">
<param name="url">https://github.com/openSUSE/product-builder.git</param>
- <param name="revision">1.4.4</param>
- <param name="version">1.4.4</param>
+ <param name="revision">1.4.6</param>
+ <param name="version">1.4.6</param>
<param name="scm">git</param>
<param name="extract">rpm/product-builder.spec</param>
</service>
++++++ product-builder-1.4.4.obscpio -> product-builder-1.4.6.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/product-builder-1.4.4/modules/KIWICollect.pm new/product-builder-1.4.6/modules/KIWICollect.pm
--- old/product-builder-1.4.4/modules/KIWICollect.pm 2021-09-10 16:14:55.000000000 +0200
+++ new/product-builder-1.4.6/modules/KIWICollect.pm 2021-09-20 15:12:29.000000000 +0200
@@ -81,8 +81,6 @@
# (...)
# m_sourcePacks:
# source rpms, which are refered from m_repoPacks
- # m_modularityPacks:
- # to trace variants in all modules of a package
# m_debugPacks:
# debug rpms, which are refered from m_repoPacks
# m_srcmedium:
@@ -105,7 +103,6 @@
m_logger => undef,
m_packagePool => undef,
m_repoPacks => undef,
- m_modularityPacks => undef,
m_sourcePacks => undef,
m_debugPacks => undef,
m_metaPacks => undef,
@@ -1019,6 +1016,11 @@
} keys(%{$poolPackages});
}
+ # marks a found package (modularity packages can fullfill requirements as well, but main package
+ # need to get added in addition in any case)
+ my $found_package;
+ my $found_modularity_package;
+
PACKKEY:
for my $packKey(@sorted_keys) {
# the packKey makes the packages unique where necessary
@@ -1027,6 +1029,8 @@
$this->logMsg('I', " check $packKey ");
}
+ next if ($found_package && !%require_version);
+
my $arch;
my $packPointer = $poolPackages->{$packKey};
for my $checkarch(@fallbacklist) {
@@ -1078,9 +1082,6 @@
}
next unless defined $arch;
- # check for modularity variants
- my %require_modularity = %{$this->{m_modularityPacks}->{$packName."@".$arch} || {}};
-
# process package
my $medium = $packOptions->{'medium'} || 1;
$packOptions->{$requestedArch}->{'newfile'} =
@@ -1184,9 +1185,15 @@
}
}
- # package processed, jump to the next request arch or package
- next ARCH unless %require_version || %require_modularity;
+ if ($packPointer->{modularity_context}) {
+ $found_modularity_package = 1;
+ } else {
+ $found_package = 1;
+ }
} # /PACKKEY
+ # package processed, jump to the next request arch or package
+ next if ($found_package || $found_modularity_package) && !%require_version;
+
my $msg = "$packName not available for "
. "$requestedArch nor its fallbacks";
$msg .= " in version ".(keys(%require_version))[0]." by package ".(values(%require_version))[0] if %require_version;
@@ -1876,8 +1883,7 @@
# directory structure up.
my $package;
$package->{'arch'} = $arch;
-# $package->{'repo'} = $this->{m_repos}->{$r};
-# $package->{'repo'}->{'srcdirs'} = {} if $package->{'repo'};
+ $package->{'repo'} = $this->{m_repos}->{$r};
$package->{'localfile'} = $uri;
$package->{'disturl'} = $flags{'DISTURL'}[0];
$package->{'license'} = $flags{'LICENSE'}[0];
@@ -1902,6 +1908,13 @@
. "@"
. $package->{'release'};
}
+ # is it a module package?
+ if( $flags{'5096'} ) {
+ my @e = split(':', $flags{'5096'}[0]);
+ # strip version, but take module name, stream, context
+ $package->{'modularity_context'} = "$e[0]:$e[1]:$e[3]";
+ $repokey .= "_".$package->{'modularity_context'};
+ }
if ( $packPool->{$name}->{$repokey} ) {
# we have it already in same repo
# is this one newer?
@@ -1913,14 +1926,6 @@
my $srcname = $flags{'SOURCERPM'}[0];
$package->{'sourcepackage'} = $srcname if ($srcname);
}
- # is it a module package?
- if( $flags{'5096'} ) {
- my @e = split(':', $flags{'5096'}[0]);
- # strip version, but take module name, stream, context
- $package->{'modularity_context'} = "${e[0]}:${e[1]}:${e[3]}";
- $repokey .= "_".$package->{'modularity_context'};
- $this->{m_modularityPacks}->{$name."@".$arch}->{$package->{modularity_context}} = 1;
- }
# store the result.
my $store;
if($packPool->{$name}) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/product-builder-1.4.4/modules/KIWIGlobals.pm new/product-builder-1.4.6/modules/KIWIGlobals.pm
--- old/product-builder-1.4.4/modules/KIWIGlobals.pm 2021-09-10 16:14:55.000000000 +0200
+++ new/product-builder-1.4.6/modules/KIWIGlobals.pm 2021-09-20 15:12:29.000000000 +0200
@@ -59,8 +59,8 @@
#------------------------------------------
my %data;
$data{Version} = "1.01.01";
- $data{Publisher} = "SUSE LINUX GmbH";
- $data{Preparer} = "KIWI - http://opensuse.github.com/kiwi";
+ $data{Publisher} = "SUSE LLC";
+ $data{Preparer} = "Product Builder - http://www.github.com/openSUSE/product-builder";
$data{ConfigName} = "config.xml";
$data{PackageManager} = "zypper";
#============================================
++++++ product-builder.obsinfo ++++++
--- /var/tmp/diff_new_pack.JOpgxv/_old 2021-09-30 23:43:36.144483603 +0200
+++ /var/tmp/diff_new_pack.JOpgxv/_new 2021-09-30 23:43:36.148483607 +0200
@@ -1,5 +1,5 @@
name: product-builder
-version: 1.4.4
-mtime: 1631283295
-commit: 82cd0d89cbb0957a2031e3317f6d88c8384f5ea9
+version: 1.4.6
+mtime: 1632143549
+commit: 8fb531cf6023254d7809be93064b2d60952923b6
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package mozjs78 for openSUSE:Factory checked in at 2021-09-30 23:43:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mozjs78 (Old)
and /work/SRC/openSUSE:Factory/.mozjs78.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mozjs78"
Thu Sep 30 23:43:01 2021 rev:10 rq:921790 version:78.14.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/mozjs78/mozjs78.changes 2021-08-16 10:14:06.446916377 +0200
+++ /work/SRC/openSUSE:Factory/.mozjs78.new.2443/mozjs78.changes 2021-09-30 23:43:33.248480287 +0200
@@ -1,0 +2,5 @@
+Mon Sep 27 10:13:20 UTC 2021 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 78.14.0esr.
+
+-------------------------------------------------------------------
Old:
----
firefox-78.13.0esr.source.tar.xz
firefox-78.13.0esr.source.tar.xz.asc
New:
----
firefox-78.14.0esr.source.tar.xz
firefox-78.14.0esr.source.tar.xz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mozjs78.spec ++++++
--- /var/tmp/diff_new_pack.uHosEg/_old 2021-09-30 23:43:35.104482412 +0200
+++ /var/tmp/diff_new_pack.uHosEg/_new 2021-09-30 23:43:35.108482417 +0200
@@ -39,7 +39,7 @@
%global big_endian 1
%endif
Name: mozjs%{major}
-Version: 78.13.0
+Version: 78.14.0
Release: 1%{?dist}
Summary: SpiderMonkey JavaScript library
License: MPL-2.0
++++++ firefox-78.13.0esr.source.tar.xz -> firefox-78.14.0esr.source.tar.xz ++++++
/work/SRC/openSUSE:Factory/mozjs78/firefox-78.13.0esr.source.tar.xz /work/SRC/openSUSE:Factory/.mozjs78.new.2443/firefox-78.14.0esr.source.tar.xz differ: char 15, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libcontainers-common for openSUSE:Factory checked in at 2021-09-30 23:43:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libcontainers-common (Old)
and /work/SRC/openSUSE:Factory/.libcontainers-common.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libcontainers-common"
Thu Sep 30 23:43:00 2021 rev:43 rq:921726 version:20210626
Changes:
--------
--- /work/SRC/openSUSE:Factory/libcontainers-common/libcontainers-common.changes 2021-09-21 21:13:11.302641737 +0200
+++ /work/SRC/openSUSE:Factory/.libcontainers-common.new.2443/libcontainers-common.changes 2021-09-30 23:43:22.408467876 +0200
@@ -1,0 +2,8 @@
+Fri Sep 17 10:20:19 UTC 2021 - Alexandre Vicenzi <alexandre.vicenzi(a)suse.com>
+
+- Update common to 0.44.0
+- Update podman to 3.3.1
+- Update storage to 1.36.0
+- Update image to 5.16.0
+
+-------------------------------------------------------------------
Old:
----
common-0.41.0.tar.xz
image-5.14.0.tar.xz
podman-3.2.3.tar.xz
storage-1.32.6.tar.xz
New:
----
common-0.44.0.tar.xz
image-5.16.0.tar.xz
podman-3.3.1.tar.xz
storage-1.36.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libcontainers-common.spec ++++++
--- /var/tmp/diff_new_pack.0GLyv7/_old 2021-09-30 23:43:23.536469167 +0200
+++ /var/tmp/diff_new_pack.0GLyv7/_new 2021-09-30 23:43:23.540469171 +0200
@@ -17,16 +17,16 @@
# commonver - version from containers/common
-%define commonver 0.41.0
+%define commonver 0.44.0
# podman - version from containers/podman
-%define podmanver 3.2.3
+%define podmanver 3.3.1
# storagever - version from containers/storage
-%define storagever 1.32.6
+%define storagever 1.36.0
# imagever - version from containers/image
-%define imagever 5.14.0
+%define imagever 5.16.0
Name: libcontainers-common
Version: 20210626
@@ -88,7 +88,6 @@
cd ..
# compile subset of containers/podman manpages
cd podman-%{podmanver}
-go-md2man -in docs/source/markdown/containers-mounts.conf.5.md -out docs/source/markdown/containers-mounts.conf.5
go-md2man -in pkg/hooks/docs/oci-hooks.5.md -out pkg/hooks/docs/oci-hooks.5
cd ..
@@ -130,7 +129,7 @@
install -D -m 0644 storage-%{storagever}/docs/*.1 %{buildroot}/%{_mandir}/man1/
install -D -m 0644 storage-%{storagever}/docs/*.5 %{buildroot}/%{_mandir}/man5/
install -D -m 0644 podman-%{podmanver}/pkg/hooks/docs/oci-hooks.5 %{buildroot}/%{_mandir}/man5/
-install -D -m 0644 podman-%{podmanver}/docs/source/markdown/containers-mounts.conf.5 %{buildroot}/%{_mandir}/man5/
+install -D -m 0644 common-%{commonver}/docs/containers-mounts.conf.5 %{buildroot}/%{_mandir}/man5/
install -D -m 0644 common-%{commonver}/docs/containers.conf.5 %{buildroot}/%{_mandir}/man5/
%post
++++++ _service ++++++
--- /var/tmp/diff_new_pack.0GLyv7/_old 2021-09-30 23:43:23.592469231 +0200
+++ /var/tmp/diff_new_pack.0GLyv7/_new 2021-09-30 23:43:23.596469235 +0200
@@ -3,7 +3,7 @@
<param name="url">https://github.com/containers/storage.git</param>
<param name="scm">git</param>
<param name="filename">storage</param>
- <param name="revision">v1.32.6</param>
+ <param name="revision">v1.36.0</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
</service>
@@ -11,7 +11,7 @@
<param name="url">https://github.com/containers/image.git</param>
<param name="scm">git</param>
<param name="filename">image</param>
- <param name="revision">v5.14.0</param>
+ <param name="revision">v5.16.0</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
</service>
@@ -19,7 +19,7 @@
<param name="url">https://github.com/containers/podman.git</param>
<param name="scm">git</param>
<param name="filename">podman</param>
- <param name="revision">v3.2.3</param>
+ <param name="revision">v3.3.1</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
</service>
@@ -27,7 +27,7 @@
<param name="url">https://github.com/containers/common.git</param>
<param name="scm">git</param>
<param name="filename">common</param>
- <param name="revision">v0.41.0</param>
+ <param name="revision">v0.44.0</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
</service>
++++++ common-0.41.0.tar.xz -> common-0.44.0.tar.xz ++++++
++++ 43791 lines of diff (skipped)
++++++ image-5.14.0.tar.xz -> image-5.16.0.tar.xz ++++++
++++ 3428 lines of diff (skipped)
++++++ podman-3.2.3.tar.xz -> podman-3.3.1.tar.xz ++++++
/work/SRC/openSUSE:Factory/libcontainers-common/podman-3.2.3.tar.xz /work/SRC/openSUSE:Factory/.libcontainers-common.new.2443/podman-3.3.1.tar.xz differ: char 26, line 1
++++++ storage-1.32.6.tar.xz -> storage-1.36.0.tar.xz ++++++
++++ 49798 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package salt for openSUSE:Factory checked in at 2021-09-30 23:43:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/salt (Old)
and /work/SRC/openSUSE:Factory/.salt.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "salt"
Thu Sep 30 23:43:00 2021 rev:119 rq:921725 version:3003.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/salt/salt.changes 2021-09-20 23:33:00.271162557 +0200
+++ /work/SRC/openSUSE:Factory/.salt.new.2443/salt.changes 2021-09-30 23:43:16.744461391 +0200
@@ -1,0 +2,188 @@
+Fri Sep 24 15:07:50 UTC 2021 - Pablo Su��rez Hern��ndez <pablo.suarezhernandez(a)suse.com>
+
+- Support querying for JSON data in external sql pillar
+
+- Added:
+ * 3003.3-postgresql-json-support-in-pillar-423.patch
+
+-------------------------------------------------------------------
+Mon Sep 20 13:03:39 UTC 2021 - Pablo Su��rez Hern��ndez <pablo.suarezhernandez(a)suse.com>
+
+- Update to Salt release version 3003.3
+- See release notes: https://docs.saltstack.com/en/latest/topics/releases/3003.3.html
+
+- Added:
+ * allow-vendor-change-option-with-zypper.patch
+ * support-transactional-systems-microos.patch
+ * virt-enhancements.patch
+
+- Modified:
+ * adds-explicit-type-cast-for-port.patch
+ * use-adler32-algorithm-to-compute-string-checksums.patch
+ * do-not-load-pip-state-if-there-is-no-3rd-party-depen.patch
+ * fixes-56144-to-enable-hotadd-profile-support.patch
+ * include-aliases-in-the-fqdns-grains.patch
+ * implementation-of-held-unheld-functions-for-state-pk.patch
+ * add-alibaba-cloud-linux-2-by-backporting-upstream-s-.patch
+ * debian-info_installed-compatibility-50453.patch
+ * fix-wrong-test_mod_del_repo_multiline_values-test-af.patch
+ * update-target-fix-for-salt-ssh-to-process-targets-li.patch
+ * x509-fixes-111.patch
+ * prevent-logging-deadlock-on-salt-api-subprocesses-bs.patch
+ * restore-default-behaviour-of-pkg-list-return.patch
+ * adding-preliminary-support-for-rocky.-59682-391.patch
+ * add-astra-linux-common-edition-to-the-os-family-list.patch
+ * templates-move-the-globals-up-to-the-environment-jin.patch
+ * fix-bsc-1065792.patch
+ * add-migrated-state-and-gpg-key-management-functions-.patch
+ * zypperpkg-ignore-retcode-104-for-search-bsc-1176697-.patch
+ * improvements-on-ansiblegate-module-354.patch
+ * add-custom-suse-capabilities-as-grains.patch
+ * return-the-expected-powerpc-os-arch-bsc-1117995.patch
+ * revert-fixing-a-use-case-when-multiple-inotify-beaco.patch
+ * enhance-openscap-module-add-xccdf_eval-call-386.patch
+ * implementation-of-suse_ip-execution-module-bsc-10999.patch
+ * add-missing-aarch64-to-rpm-package-architectures-405.patch
+ * async-batch-implementation.patch
+ * temporary-fix-extend-the-whitelist-of-allowed-comman.patch
+ * do-not-crash-when-unexpected-cmd-output-at-listing-p.patch
+ * figure-out-python-interpreter-to-use-inside-containe.patch
+ * better-handling-of-bad-public-keys-from-minions-bsc-.patch
+ * early-feature-support-config.patch
+ * do-not-monkey-patch-yaml-bsc-1177474.patch
+
+- Removed:
+ * fix-memory-leak-produced-by-batch-async-find_jobs-me.patch
+ * fix-regression-on-cmd.run-when-passing-tuples-as-cmd.patch
+ * fix-for-log-checking-in-x509-test.patch
+ * do-not-make-ansiblegate-to-crash-on-python3-minions.patch
+ * prevent-race-condition-on-sigterm-for-the-minion-bsc.patch
+ * remove-msgpack-1.0.0-requirement-in-the-installed-me.patch
+ * move-server_id-deprecation-warning-to-reduce-log-spa.patch
+ * re-adding-function-to-test-for-root.patch
+ * make-profiles-a-package.patch
+ * handle-master-tops-data-when-states-are-applied-by-t.patch
+ * fix-unit-tests-for-batch-async-after-refactor.patch
+ * prevent-test_mod_del_repo_multiline_values-to-fail.patch
+ * prevent-import-errors-when-running-test_btrfs-unit-t.patch
+ * fix-failing-unit-tests-for-batch-async.patch
+ * remove-unnecessary-yield-causing-badyielderror-bsc-1.patch
+ * virt-use-dev-kvm-to-detect-kvm-383.patch
+ * 3002.2-xen-spicevmc-dns-srv-records-backports-314.patch
+ * add-docker-logout-237.patch
+ * drop-wrong-mock-from-chroot-unit-test.patch
+ * fix-async-batch-multiple-done-events.patch
+ * fix-unit-test-for-grains-core.patch
+ * remove-arch-from-name-when-pkg.list_pkgs-is-called-w.patch
+ * pkgrepo-support-python-2.7-function-call-295.patch
+ * opensuse-3000-virt-defined-states-222.patch
+ * open-suse-3002.2-xen-grub-316.patch
+ * add-patch-support-for-allow-vendor-change-option-wit.patch
+ * fix-the-removed-six.itermitems-and-six.-_type-262.patch
+ * fix-aptpkg-systemd-call-bsc-1143301.patch
+ * add-almalinux-and-alibaba-cloud-linux-to-the-os-fami.patch
+ * fix-cve-2020-25592-and-add-tests-bsc-1178319.patch
+ * regression-fix-of-salt-ssh-on-processing-targets-353.patch
+ * do-not-break-repo-files-with-multiple-line-values-on.patch
+ * 3002-set-distro-requirement-to-oldest-supported-vers.patch
+ * integration-of-msi-authentication-with-azurearm-clou.patch
+ * zypperpkg-filter-patterns-that-start-with-dot-244.patch
+ * fix-for-temp-folder-definition-in-loader-unit-test.patch
+ * fix-novendorchange-option-284.patch
+ * backport-virt-patches-from-3001-256.patch
+ * allow-passing-kwargs-to-pkg.list_downloaded-bsc-1140.patch
+ * path-replace-functools.wraps-with-six.wraps-bsc-1177.patch
+ * virt-uefi-fix-backport-312.patch
+ * add-all_versions-parameter-to-include-all-installed-.patch
+ * add-pkg.services_need_restart-302.patch
+ * add-batch_presence_ping_timeout-and-batch_presence_p.patch
+ * allow-vendor-change-option-with-zypper-313.patch
+ * avoid-traceback-when-http.query-request-cannot-be-pe.patch
+ * changed-imports-to-vendored-tornado.patch
+ * fix-issue-parsing-errors-in-ansiblegate-state-module.patch
+ * sanitize-grains-loaded-from-roster_grains.json.patch
+ * handle-volumes-on-stopped-pools-in-virt.vm_info-373.patch
+ * add-multi-file-support-and-globbing-to-the-filetree-.patch
+ * loosen-azure-sdk-dependencies-in-azurearm-cloud-driv.patch
+ * backport-thread.is_alive-fix-390.patch
+ * get-os_arch-also-without-rpm-package-installed.patch
+ * python3.8-compatibility-pr-s-235.patch
+ * fixed-bug-lvm-has-no-parttion-type.-the-scipt-later-.patch
+ * ensure-virt.update-stop_on_reboot-is-updated-with-it.patch
+ * xfs-do-not-fails-if-type-is-not-present.patch
+ * grains-master-can-read-grains.patch
+ * invalidate-file-list-cache-when-cache-file-modified-.patch
+ * move-vendor-change-logic-to-zypper-class-355.patch
+ * implement-network.fqdns-module-function-bsc-1134860-.patch
+ * opensuse-3000.2-virt-backports-236-257.patch
+ * prevent-ansiblegate-unit-tests-to-fail-on-ubuntu.patch
+ * batch_async-avoid-using-fnmatch-to-match-event-217.patch
+ * provide-the-missing-features-required-for-yomi-yet-o.patch
+ * fix-__mount_device-wrapper-254.patch
+ * fix-ipv6-scope-bsc-1108557.patch
+ * fix-failing-unit-tests-for-systemd.patch
+ * use-current-ioloop-for-the-localclient-instance-of-b.patch
+ * revert-add-patch-support-for-allow-vendor-change-opt.patch
+ * remove-deprecated-warning-that-breaks-miniion-execut.patch
+ * prevent-systemd-run-description-issue-when-running-a.patch
+ * fix-grains.test_core-unit-test-277.patch
+ * prevent-command-injection-in-the-snapper-module-bsc-.patch
+ * backport-of-upstream-pr59492-to-3002.2-404.patch
+ * use-threadpool-from-multiprocessing.pool-to-avoid-le.patch
+ * reintroducing-reverted-changes.patch
+ * add-cpe_name-for-osversion-grain-parsing-u-49946.patch
+ * add-hold-unhold-functions.patch
+ * virt._get_domain-don-t-raise-an-exception-if-there-i.patch
+ * fix-error-handling-in-openscap-module-bsc-1188647-40.patch
+ * apply-patch-from-upstream-to-support-python-3.8.patch
+ * remove-deprecated-usage-of-no_mock-and-no_mock_reaso.patch
+ * add-supportconfig-module-for-remote-calls-and-saltss.patch
+ * allow-extra_filerefs-as-sanitized-kwargs-for-ssh-cli.patch
+ * fall-back-to-pymysql.patch
+ * fixes-cve-2018-15750-cve-2018-15751.patch
+ * do-not-crash-when-there-are-ipv6-established-connect.patch
+ * improve-batch_async-to-release-consumed-memory-bsc-1.patch
+ * support-config-non-root-permission-issues-fixes-u-50.patch
+ * transactional_update-detect-recursion-in-the-executo.patch
+ * open-suse-3002.2-virt-network-311.patch
+ * option-to-en-disable-force-refresh-in-zypper-215.patch
+ * do-noop-for-services-states-when-running-systemd-in-.patch
+ * exclude-the-full-path-of-a-download-url-to-prevent-i.patch
+ * fix-a-wrong-rebase-in-test_core.py-180.patch
+ * add-new-custom-suse-capability-for-saltutil-state-mo.patch
+ * opensuse-3000-libvirt-engine-fixes-251.patch
+ * accumulated-changes-from-yomi-167.patch
+ * fix-async-batch-race-conditions.patch
+ * fix-onlyif-unless-when-multiple-conditions-bsc-11808.patch
+ * loop-fix-variable-names-for-until_no_eval.patch
+ * batch-async-catch-exceptions-and-safety-unregister-a.patch
+ * grains.extra-support-old-non-intel-kernels-bsc-11806.patch
+ * backport-a-few-virt-prs-272.patch
+ * fix-git_pillar-merging-across-multiple-__env__-repos.patch
+ * drop-wrong-virt-capabilities-code-after-rebasing-pat.patch
+ * virt-adding-kernel-boot-parameters-to-libvirt-xml-55.patch
+ * async-batch-implementation-fix-320.patch
+ * support-for-btrfs-and-xfs-in-parted-and-mkfs.patch
+ * support-transactional-systems-microos-271.patch
+ * strip-trailing-from-repo.uri-when-comparing-repos-in.patch
+ * opensuse-3000.3-spacewalk-runner-parse-command-250.patch
+ * calculate-fqdns-in-parallel-to-avoid-blockings-bsc-1.patch
+ * add-virt.all_capabilities.patch
+ * ansiblegate-take-care-of-failed-skipped-and-unreacha.patch
+ * virt-pass-emulator-when-getting-domain-capabilities-.patch
+ * fixing-streamclosed-issue.patch
+ * fix-for-some-cves-bsc1181550.patch
+ * transactional_update-unify-with-chroot.call.patch
+ * do-not-raise-streamclosederror-traceback-but-only-lo.patch
+ * fix-batch_async-obsolete-test.patch
+ * fix-zypper-pkg.list_pkgs-expectation-and-dpkg-mockin.patch
+ * fix-zypper.list_pkgs-to-be-aligned-with-pkg-state.patch
+ * accumulated-changes-required-for-yomi-165.patch
+ * fix-virt.update-with-cpu-defined-263.patch
+ * remove-vendored-backports-abc-from-requirements.patch
+ * open-suse-3002.2-bigvm-310.patch
+ * xen-disk-fixes-264.patch
+ * virt.network_update-handle-missing-ipv4-netmask-attr.patch
+ * add-saltssh-multi-version-support-across-python-inte.patch
+
+-------------------------------------------------------------------
Old:
----
3002-set-distro-requirement-to-oldest-supported-vers.patch
3002.2-xen-spicevmc-dns-srv-records-backports-314.patch
accumulated-changes-from-yomi-167.patch
accumulated-changes-required-for-yomi-165.patch
add-all_versions-parameter-to-include-all-installed-.patch
add-almalinux-and-alibaba-cloud-linux-to-the-os-fami.patch
add-batch_presence_ping_timeout-and-batch_presence_p.patch
add-cpe_name-for-osversion-grain-parsing-u-49946.patch
add-docker-logout-237.patch
add-hold-unhold-functions.patch
add-multi-file-support-and-globbing-to-the-filetree-.patch
add-new-custom-suse-capability-for-saltutil-state-mo.patch
add-patch-support-for-allow-vendor-change-option-wit.patch
add-pkg.services_need_restart-302.patch
add-saltssh-multi-version-support-across-python-inte.patch
add-supportconfig-module-for-remote-calls-and-saltss.patch
add-virt.all_capabilities.patch
allow-extra_filerefs-as-sanitized-kwargs-for-ssh-cli.patch
allow-passing-kwargs-to-pkg.list_downloaded-bsc-1140.patch
allow-vendor-change-option-with-zypper-313.patch
ansiblegate-take-care-of-failed-skipped-and-unreacha.patch
apply-patch-from-upstream-to-support-python-3.8.patch
async-batch-implementation-fix-320.patch
avoid-traceback-when-http.query-request-cannot-be-pe.patch
backport-a-few-virt-prs-272.patch
backport-of-upstream-pr59492-to-3002.2-404.patch
backport-thread.is_alive-fix-390.patch
backport-virt-patches-from-3001-256.patch
batch-async-catch-exceptions-and-safety-unregister-a.patch
batch_async-avoid-using-fnmatch-to-match-event-217.patch
calculate-fqdns-in-parallel-to-avoid-blockings-bsc-1.patch
changed-imports-to-vendored-tornado.patch
do-noop-for-services-states-when-running-systemd-in-.patch
do-not-break-repo-files-with-multiple-line-values-on.patch
do-not-crash-when-there-are-ipv6-established-connect.patch
do-not-make-ansiblegate-to-crash-on-python3-minions.patch
do-not-raise-streamclosederror-traceback-but-only-lo.patch
drop-wrong-mock-from-chroot-unit-test.patch
drop-wrong-virt-capabilities-code-after-rebasing-pat.patch
ensure-virt.update-stop_on_reboot-is-updated-with-it.patch
exclude-the-full-path-of-a-download-url-to-prevent-i.patch
fall-back-to-pymysql.patch
fix-__mount_device-wrapper-254.patch
fix-a-wrong-rebase-in-test_core.py-180.patch
fix-aptpkg-systemd-call-bsc-1143301.patch
fix-async-batch-multiple-done-events.patch
fix-async-batch-race-conditions.patch
fix-batch_async-obsolete-test.patch
fix-cve-2020-25592-and-add-tests-bsc-1178319.patch
fix-error-handling-in-openscap-module-bsc-1188647-40.patch
fix-failing-unit-tests-for-batch-async.patch
fix-failing-unit-tests-for-systemd.patch
fix-for-log-checking-in-x509-test.patch
fix-for-some-cves-bsc1181550.patch
fix-for-temp-folder-definition-in-loader-unit-test.patch
fix-git_pillar-merging-across-multiple-__env__-repos.patch
fix-grains.test_core-unit-test-277.patch
fix-ipv6-scope-bsc-1108557.patch
fix-issue-parsing-errors-in-ansiblegate-state-module.patch
fix-memory-leak-produced-by-batch-async-find_jobs-me.patch
fix-novendorchange-option-284.patch
fix-onlyif-unless-when-multiple-conditions-bsc-11808.patch
fix-regression-on-cmd.run-when-passing-tuples-as-cmd.patch
fix-the-removed-six.itermitems-and-six.-_type-262.patch
fix-unit-test-for-grains-core.patch
fix-unit-tests-for-batch-async-after-refactor.patch
fix-virt.update-with-cpu-defined-263.patch
fix-zypper-pkg.list_pkgs-expectation-and-dpkg-mockin.patch
fix-zypper.list_pkgs-to-be-aligned-with-pkg-state.patch
fixed-bug-lvm-has-no-parttion-type.-the-scipt-later-.patch
fixes-cve-2018-15750-cve-2018-15751.patch
fixing-streamclosed-issue.patch
get-os_arch-also-without-rpm-package-installed.patch
grains-master-can-read-grains.patch
grains.extra-support-old-non-intel-kernels-bsc-11806.patch
handle-master-tops-data-when-states-are-applied-by-t.patch
handle-volumes-on-stopped-pools-in-virt.vm_info-373.patch
implement-network.fqdns-module-function-bsc-1134860-.patch
improve-batch_async-to-release-consumed-memory-bsc-1.patch
integration-of-msi-authentication-with-azurearm-clou.patch
invalidate-file-list-cache-when-cache-file-modified-.patch
loop-fix-variable-names-for-until_no_eval.patch
loosen-azure-sdk-dependencies-in-azurearm-cloud-driv.patch
make-profiles-a-package.patch
move-server_id-deprecation-warning-to-reduce-log-spa.patch
move-vendor-change-logic-to-zypper-class-355.patch
open-suse-3002.2-bigvm-310.patch
open-suse-3002.2-virt-network-311.patch
open-suse-3002.2-xen-grub-316.patch
opensuse-3000-libvirt-engine-fixes-251.patch
opensuse-3000-virt-defined-states-222.patch
opensuse-3000.2-virt-backports-236-257.patch
opensuse-3000.3-spacewalk-runner-parse-command-250.patch
option-to-en-disable-force-refresh-in-zypper-215.patch
path-replace-functools.wraps-with-six.wraps-bsc-1177.patch
pkgrepo-support-python-2.7-function-call-295.patch
prevent-ansiblegate-unit-tests-to-fail-on-ubuntu.patch
prevent-command-injection-in-the-snapper-module-bsc-.patch
prevent-import-errors-when-running-test_btrfs-unit-t.patch
prevent-race-condition-on-sigterm-for-the-minion-bsc.patch
prevent-systemd-run-description-issue-when-running-a.patch
prevent-test_mod_del_repo_multiline_values-to-fail.patch
provide-the-missing-features-required-for-yomi-yet-o.patch
python3.8-compatibility-pr-s-235.patch
re-adding-function-to-test-for-root.patch
regression-fix-of-salt-ssh-on-processing-targets-353.patch
reintroducing-reverted-changes.patch
remove-arch-from-name-when-pkg.list_pkgs-is-called-w.patch
remove-deprecated-usage-of-no_mock-and-no_mock_reaso.patch
remove-deprecated-warning-that-breaks-miniion-execut.patch
remove-msgpack-1.0.0-requirement-in-the-installed-me.patch
remove-unnecessary-yield-causing-badyielderror-bsc-1.patch
remove-vendored-backports-abc-from-requirements.patch
revert-add-patch-support-for-allow-vendor-change-opt.patch
sanitize-grains-loaded-from-roster_grains.json.patch
strip-trailing-from-repo.uri-when-comparing-repos-in.patch
support-config-non-root-permission-issues-fixes-u-50.patch
support-for-btrfs-and-xfs-in-parted-and-mkfs.patch
support-transactional-systems-microos-271.patch
transactional_update-detect-recursion-in-the-executo.patch
transactional_update-unify-with-chroot.call.patch
use-current-ioloop-for-the-localclient-instance-of-b.patch
use-threadpool-from-multiprocessing.pool-to-avoid-le.patch
v3002.2.tar.gz
virt-adding-kernel-boot-parameters-to-libvirt-xml-55.patch
virt-pass-emulator-when-getting-domain-capabilities-.patch
virt-uefi-fix-backport-312.patch
virt-use-dev-kvm-to-detect-kvm-383.patch
virt._get_domain-don-t-raise-an-exception-if-there-i.patch
virt.network_update-handle-missing-ipv4-netmask-attr.patch
xen-disk-fixes-264.patch
xfs-do-not-fails-if-type-is-not-present.patch
zypperpkg-filter-patterns-that-start-with-dot-244.patch
New:
----
3003.3-postgresql-json-support-in-pillar-423.patch
allow-vendor-change-option-with-zypper.patch
support-transactional-systems-microos.patch
v3003.3.tar.gz
virt-enhancements.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ salt.spec ++++++
++++ 802 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/salt/salt.spec
++++ and /work/SRC/openSUSE:Factory/.salt.new.2443/salt.spec
++++++ 3003.3-postgresql-json-support-in-pillar-423.patch ++++++
++++ 1008 lines (skipped)
++++++ _lastrevision ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.684465901 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.684465901 +0200
@@ -1 +1 @@
-71392e10750f7481475066788a23a39ad92d0c64
\ No newline at end of file
+deacfe2304a0b9f34a9130b61bd69dea851962a7
\ No newline at end of file
++++++ _service ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.700465920 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.700465920 +0200
@@ -3,7 +3,7 @@
<param name="url">https://github.com/openSUSE/salt-packaging.git</param>
<param name="subdir">salt</param>
<param name="filename">package</param>
- <param name="revision">3002.2</param>
+ <param name="revision">3003.3</param>
<param name="scm">git</param>
</service>
<service name="extract_file" mode="disabled">
@@ -12,8 +12,8 @@
</service>
<service name="download_url" mode="disabled">
<param name="host">codeload.github.com</param>
- <param name="path">openSUSE/salt/tar.gz/v3002.2-suse</param>
- <param name="filename">v3002.2.tar.gz</param>
+ <param name="path">openSUSE/salt/tar.gz/v3003.3-suse</param>
+ <param name="filename">v3003.3.tar.gz</param>
</service>
<service name="update_changelog" mode="disabled"></service>
</services>
++++++ add-alibaba-cloud-linux-2-by-backporting-upstream-s-.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.712465933 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.712465933 +0200
@@ -1,45 +1,48 @@
-From ec0d11ed66e8541a9ccaebc85aab4724013fb71f Mon Sep 17 00:00:00 2001
+From 2e810cc876f7b7110326231de51d78ff5d12eae6 Mon Sep 17 00:00:00 2001
From: Pau Garcia Quiles <pau.garcia(a)suse.com>
Date: Tue, 13 Apr 2021 10:31:09 +0200
Subject: [PATCH] Add Alibaba Cloud Linux 2 by backporting upstream's
grain and discarding my own (#352)
---
- salt/grains/core.py | 4 ++--
- tests/unit/grains/test_core.py | 26 +++++++++++++++++---------
- 2 files changed, 19 insertions(+), 11 deletions(-)
+ salt/grains/core.py | 2 ++
+ tests/unit/grains/test_core.py | 28 ++++++++++++++++++++++++++++
+ 2 files changed, 30 insertions(+)
diff --git a/salt/grains/core.py b/salt/grains/core.py
-index 09f9d29788..2b965a2a8a 100644
+index 19937f008e..bce8c95179 100644
--- a/salt/grains/core.py
+++ b/salt/grains/core.py
-@@ -1547,7 +1547,7 @@ _OS_NAME_MAP = {
- "slesexpand": "RES",
+@@ -1560,6 +1560,7 @@ _OS_NAME_MAP = {
"linuxmint": "Mint",
"neon": "KDE neon",
-- "alibaba": "Alibaba Cloud (Aliyun)",
+ "pop": "Pop",
+ "alibabaclo": "Alinux",
}
# Map the 'os' grain to the 'os_family' grain
-@@ -1622,7 +1622,7 @@ _OS_FAMILY_MAP = {
- "AIX": "AIX",
+@@ -1637,6 +1638,7 @@ _OS_FAMILY_MAP = {
"TurnKey": "Debian",
+ "Pop": "Debian",
"AstraLinuxCE": "Debian",
-- "Alibaba Cloud (Aliyun)": "RedHat",
+ "Alinux": "RedHat",
}
# Matches any possible format:
diff --git a/tests/unit/grains/test_core.py b/tests/unit/grains/test_core.py
-index 6aa05abe40..8280d6de47 100644
+index ac2d515bcd..fa06bb27ab 100644
--- a/tests/unit/grains/test_core.py
+++ b/tests/unit/grains/test_core.py
-@@ -782,17 +782,25 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
- Test if OS grains are parsed correctly in Alibaba Cloud Linux (Aliyun Linux) 2.1903 LTS
- '''
- _os_release_map = {
-- '_linux_distribution': ('Alibaba Cloud Linux (Aliyun Linux)', '2.1903', 'Alibaba Cloud Linux (Aliyun Linux) 2.1903 LTS (Hunting Beagle)'),
+@@ -846,6 +846,34 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
+ }
+ self._run_os_grains_tests("astralinuxce-2.12.22", _os_release_map, expectation)
+
++ @skipIf(not salt.utils.platform.is_linux(), 'System is not Linux')
++ def test_aliyunlinux2_os_grains(self):
++ '''
++ Test if OS grains are parsed correctly in Alibaba Cloud Linux (Aliyun Linux) 2.1903 LTS
++ '''
++ _os_release_map = {
+ "os_release_file": {
+ "NAME": "Alibaba Cloud Linux (Aliyun Linux)",
+ "VERSION": "2.1903 LTS (Hunting Beagle)",
@@ -49,16 +52,8 @@
+ "ANSI_COLOR": "0;31",
+ },
+ "_linux_distribution": ("alinux", "2.1903", "LTS"),
- }
- expectation = {
-- 'os': 'Alibaba Cloud (Aliyun)',
-- 'os_family': 'RedHat',
-- 'oscodename': 'Alibaba Cloud Linux (Aliyun Linux) 2.1903 LTS (Hunting Beagle)',
-- 'osfullname': 'Alibaba Cloud Linux (Aliyun Linux)',
-- 'osrelease': '2.1903',
-- 'osrelease_info': (2, 1903),
-- 'osmajorrelease': 2,
-- 'osfinger': 'Alibaba Cloud Linux (Aliyun Linux)-2',
++ }
++ expectation = {
+ "os": "Alinux",
+ "os_family": "RedHat",
+ "oscodename": "Alibaba Cloud Linux (Aliyun Linux) 2.1903 LTS (Hunting Beagle)",
@@ -67,10 +62,13 @@
+ "osrelease_info": (2, 1903),
+ "osmajorrelease": 2,
+ "osfinger": "Alibaba Cloud Linux (Aliyun Linux)-2",
- }
- self._run_os_grains_tests(None, _os_release_map, expectation)
-
++ }
++ self._run_os_grains_tests(None, _os_release_map, expectation)
++
+ @skipIf(not salt.utils.platform.is_windows(), "System is not Windows")
+ def test_windows_platform_data(self):
+ """
--
-2.30.2
+2.33.0
++++++ add-astra-linux-common-edition-to-the-os-family-list.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.720465943 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.720465943 +0200
@@ -1,4 +1,4 @@
-From d5569023c64a3fcec57a7aa6823ee94e8be91b3d Mon Sep 17 00:00:00 2001
+From 30366101c20eefd2411482138edfa0ca0c8a3b06 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Julio=20Gonz=C3=A1lez=20Gil?=
<juliogonzalez(a)users.noreply.github.com>
Date: Wed, 12 Feb 2020 10:05:45 +0100
@@ -11,24 +11,24 @@
2 files changed, 21 insertions(+)
diff --git a/salt/grains/core.py b/salt/grains/core.py
-index 5dff6ecfd4..5634327623 100644
+index e007f40c92..19937f008e 100644
--- a/salt/grains/core.py
+++ b/salt/grains/core.py
-@@ -1618,6 +1618,7 @@ _OS_FAMILY_MAP = {
- "Funtoo": "Gentoo",
+@@ -1636,6 +1636,7 @@ _OS_FAMILY_MAP = {
"AIX": "AIX",
"TurnKey": "Debian",
+ "Pop": "Debian",
+ "AstraLinuxCE": "Debian",
}
# Matches any possible format:
diff --git a/tests/unit/grains/test_core.py b/tests/unit/grains/test_core.py
-index 85d434dd9d..196dbcf83d 100644
+index 7173f04979..e8845e2dfa 100644
--- a/tests/unit/grains/test_core.py
+++ b/tests/unit/grains/test_core.py
-@@ -728,6 +728,26 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
+@@ -826,6 +826,26 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
}
- self._run_os_grains_tests("ubuntu-17.10", _os_release_map, expectation)
+ self._run_os_grains_tests("pop-20.10", _os_release_map, expectation)
+ @skipIf(not salt.utils.platform.is_linux(), "System is not Linux")
+ def test_astralinuxce_2_os_grains(self):
@@ -36,7 +36,7 @@
+ Test if OS grains are parsed correctly in Astra Linux CE 2.12.22 "orel"
+ """
+ _os_release_map = {
-+ "linux_distribution": ("AstraLinuxCE", "2.12.22", "orel"),
++ "_linux_distribution": ("AstraLinuxCE", "2.12.22", "orel"),
+ }
+ expectation = {
+ "os": "AstraLinuxCE",
@@ -54,6 +54,6 @@
def test_windows_platform_data(self):
"""
--
-2.29.2
+2.33.0
++++++ add-custom-suse-capabilities-as-grains.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.732465956 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.732465956 +0200
@@ -1,18 +1,19 @@
-From 713ccfdc5c6733495d3ce7f26a8cfeddb8e9e9c4 Mon Sep 17 00:00:00 2001
+From bdb48ed82c755407bc413fa445e057a6da5f1e87 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
<psuarezhernandez(a)suse.com>
Date: Thu, 21 Jun 2018 11:57:57 +0100
Subject: [PATCH] Add custom SUSE capabilities as Grains
+Add new custom SUSE capability for saltutil state module
---
- salt/grains/extra.py | 7 +++++++
- 1 file changed, 7 insertions(+)
+ salt/grains/extra.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
diff --git a/salt/grains/extra.py b/salt/grains/extra.py
-index 2fdbe6526a..ddc22293ea 100644
+index 2fdbe6526a..0eec27e628 100644
--- a/salt/grains/extra.py
+++ b/salt/grains/extra.py
-@@ -66,3 +66,10 @@ def config():
+@@ -66,3 +66,11 @@ def config():
log.warning("Bad syntax in grains file! Skipping.")
return {}
return {}
@@ -21,9 +22,10 @@
+def suse_backported_capabilities():
+ return {
+ '__suse_reserved_pkg_all_versions_support': True,
-+ '__suse_reserved_pkg_patches_support': True
++ '__suse_reserved_pkg_patches_support': True,
++ '__suse_reserved_saltutil_states_support': True
+ }
--
-2.29.2
+2.33.0
++++++ add-migrated-state-and-gpg-key-management-functions-.patch ++++++
++++ 3179 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/salt/add-migrated-state-and-gpg-key-management-functions-.patch
++++ and /work/SRC/openSUSE:Factory/.salt.new.2443/add-migrated-state-and-gpg-key-management-functions-.patch
++++++ add-missing-aarch64-to-rpm-package-architectures-405.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.752465979 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.752465979 +0200
@@ -1,21 +1,20 @@
-From e7723f081cc79088156a986cf940349fec7f00a3 Mon Sep 17 00:00:00 2001
+From 03b40485102e88e217814ea4e08fb857ad16cbff Mon Sep 17 00:00:00 2001
From: Victor Zhestkov <35733135+vzhestkov(a)users.noreply.github.com>
Date: Wed, 18 Aug 2021 15:05:42 +0300
-Subject: [PATCH] Add missing aarch64 to rpm package architectures
- (#405)
+Subject: [PATCH] Add missing aarch64 to rpm package architectures (#405)
Required to prevent false negative results on using pkg.installed
with architecture specification in package name (ex. `bash.aarch64`)
---
salt/utils/pkg/rpm.py | 2 +-
- tests/unit/modules/test_zypperpkg.py | 20 ++++++++++++++++++++
- 2 files changed, 21 insertions(+), 1 deletion(-)
+ tests/unit/modules/test_zypperpkg.py | 34 ++++++++++++++++++++++++++++
+ 2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/salt/utils/pkg/rpm.py b/salt/utils/pkg/rpm.py
-index d1b149ea0b..8b8ea2e4b1 100644
+index 3e990cc05d..8203d2f989 100644
--- a/salt/utils/pkg/rpm.py
+++ b/salt/utils/pkg/rpm.py
-@@ -33,7 +33,7 @@ ARCHES_ALPHA = (
+@@ -30,7 +30,7 @@ ARCHES_ALPHA = (
"alphaev68",
"alphaev7",
)
@@ -25,13 +24,27 @@
ARCHES = (
diff --git a/tests/unit/modules/test_zypperpkg.py b/tests/unit/modules/test_zypperpkg.py
-index 5c01bbbfbd..d6a6a6d852 100644
+index 2d7e5f0858..20bf5eaaad 100644
--- a/tests/unit/modules/test_zypperpkg.py
+++ b/tests/unit/modules/test_zypperpkg.py
-@@ -2477,3 +2477,23 @@ pattern() = package-c"""
- with patch("salt.modules.zypperpkg.__zypper__", zypper_mock):
- assert zypper.services_need_restart() == expected
- zypper_mock(root=None).nolock.call.assert_called_with("ps", "-sss")
+@@ -2475,3 +2475,37 @@ pattern() = package-c"""
+ with patch.dict(zypper.__salt__, salt_mock):
+ self.assertTrue(zypper.del_repo_key(keyid="keyid", root="/mnt"))
+ salt_mock["lowpkg.remove_gpg_key"].assert_called_once_with("keyid", "/mnt")
++
++ def test_services_need_restart(self):
++ """
++ Test that zypper ps is used correctly to list services that need to
++ be restarted.
++ """
++ expected = ["salt-minion", "firewalld"]
++ zypper_output = "salt-minion\nfirewalld"
++ zypper_mock = Mock()
++ zypper_mock(root=None).nolock.call = Mock(return_value=zypper_output)
++
++ with patch("salt.modules.zypperpkg.__zypper__", zypper_mock):
++ assert zypper.services_need_restart() == expected
++ zypper_mock(root=None).nolock.call.assert_called_with("ps", "-sss")
+
+ def test_normalize_name(self):
+ """
@@ -53,6 +66,6 @@
+ result = zypper.normalize_name("foo.noarch")
+ assert result == "foo", result
--
-2.32.0
+2.33.0
++++++ adding-preliminary-support-for-rocky.-59682-391.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.764465993 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.764465993 +0200
@@ -1,4 +1,4 @@
-From 34a913b0b54b55edf042dc899250e56ef0eaec77 Mon Sep 17 00:00:00 2001
+From e3e55336b0d457cb55cd83236e9ac8e0dc671d2e Mon Sep 17 00:00:00 2001
From: Victor Zhestkov <35733135+vzhestkov(a)users.noreply.github.com>
Date: Mon, 5 Jul 2021 18:57:26 +0300
Subject: [PATCH] Adding preliminary support for Rocky. (#59682) (#391)
@@ -32,30 +32,30 @@
@@ -0,0 +1 @@
+Rocky Linux has been added to the RedHat os_family.
diff --git a/salt/grains/core.py b/salt/grains/core.py
-index 2b965a2a8a..ace0e4bff9 100644
+index bce8c95179..f79110124f 100644
--- a/salt/grains/core.py
+++ b/salt/grains/core.py
-@@ -1547,6 +1547,7 @@ _OS_NAME_MAP = {
- "slesexpand": "RES",
+@@ -1560,6 +1560,7 @@ _OS_NAME_MAP = {
"linuxmint": "Mint",
"neon": "KDE neon",
+ "pop": "Pop",
+ "rocky": "Rocky",
"alibabaclo": "Alinux",
}
-@@ -1621,6 +1622,7 @@ _OS_FAMILY_MAP = {
- "Funtoo": "Gentoo",
+@@ -1637,6 +1638,7 @@ _OS_FAMILY_MAP = {
"AIX": "AIX",
"TurnKey": "Debian",
+ "Pop": "Debian",
+ "Rocky": "RedHat",
"AstraLinuxCE": "Debian",
"Alinux": "RedHat",
}
diff --git a/tests/unit/grains/test_core.py b/tests/unit/grains/test_core.py
-index 8280d6de47..61a6956e32 100644
+index fa06bb27ab..fcc7586775 100644
--- a/tests/unit/grains/test_core.py
+++ b/tests/unit/grains/test_core.py
-@@ -678,6 +678,35 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
+@@ -708,6 +708,35 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
}
self._run_os_grains_tests(None, _os_release_map, expectation)
@@ -92,6 +92,6 @@
def test_almalinux_8_os_grains(self):
"""
--
-2.32.0
+2.33.0
++++++ adds-explicit-type-cast-for-port.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.772466003 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.772466003 +0200
@@ -1,4 +1,4 @@
-From 12d67e0cfa54399f3a0b6ae0d4faa09793fa2b0f Mon Sep 17 00:00:00 2001
+From 3beb3379dafe1adf9c1a43694f7b71938be3f583 Mon Sep 17 00:00:00 2001
From: Jochen Breuer <jbreuer(a)suse.de>
Date: Wed, 1 Apr 2020 16:13:23 +0200
Subject: [PATCH] Adds explicit type cast for port
@@ -8,26 +8,25 @@
The type casting to int solves this issue.
---
- salt/utils/network.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ salt/utils/network.py | 4 ++++
+ 1 file changed, 4 insertions(+)
diff --git a/salt/utils/network.py b/salt/utils/network.py
-index 25b2d06758..1705a5809d 100644
+index 5fc9a34ca4..0dd20c5599 100644
--- a/salt/utils/network.py
+++ b/salt/utils/network.py
-@@ -1626,9 +1626,9 @@ def _netlink_tool_remote_on(port, which_end):
- local_host, local_port = chunks[3].rsplit(":", 1)
+@@ -1703,6 +1703,10 @@ def _netlink_tool_remote_on(port, which_end):
+ chunks = line.split()
remote_host, remote_port = chunks[4].rsplit(":", 1)
-- if which_end == "remote_port" and int(remote_port) != port:
+ if which_end == "remote_port" and int(remote_port) != int(port):
- continue
-- if which_end == "local_port" and int(local_port) != port:
++ continue
+ if which_end == "local_port" and int(local_port) != int(port):
- continue
++ continue
remotes.add(remote_host.strip("[]"))
+ if valid is False:
--
-2.29.2
+2.33.0
++++++ allow-vendor-change-option-with-zypper-313.patch -> allow-vendor-change-option-with-zypper.patch ++++++
++++ 941 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/salt/allow-vendor-change-option-with-zypper-313.patch
++++ and /work/SRC/openSUSE:Factory/.salt.new.2443/allow-vendor-change-option-with-zypper.patch
++++++ async-batch-implementation.patch ++++++
++++ 1344 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/salt/async-batch-implementation.patch
++++ and /work/SRC/openSUSE:Factory/.salt.new.2443/async-batch-implementation.patch
++++++ better-handling-of-bad-public-keys-from-minions-bsc-.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.808466043 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.808466043 +0200
@@ -1,4 +1,4 @@
-From cd64b9a063771829f85d6be0e42259825cfb10c8 Mon Sep 17 00:00:00 2001
+From f0025c6d00f174db587726bb15b78713cbbcf996 Mon Sep 17 00:00:00 2001
From: "Daniel A. Wozniak" <dwozniak(a)saltstack.com>
Date: Mon, 2 Aug 2021 13:50:37 -0700
Subject: [PATCH] Better handling of bad public keys from minions
@@ -31,7 +31,7 @@
@@ -0,0 +1 @@
+Better handling of bad RSA public keys from minions
diff --git a/salt/crypt.py b/salt/crypt.py
-index 0a8b728f50..e6e4f3181e 100644
+index f3da78f9ba..789c562e25 100644
--- a/salt/crypt.py
+++ b/salt/crypt.py
@@ -36,6 +36,7 @@ import salt.utils.verify
@@ -42,7 +42,7 @@
MasterExit,
SaltClientError,
SaltReqTimeoutError,
-@@ -217,10 +218,16 @@ def get_rsa_pub_key(path):
+@@ -220,10 +221,16 @@ def get_rsa_pub_key(path):
with salt.utils.files.fopen(path, "rb") as f:
data = f.read().replace(b"RSA ", b"")
bio = BIO.MemoryBuffer(data)
@@ -79,18 +79,18 @@
"""
Used in modules or grains when a required binary is not available
diff --git a/salt/key.py b/salt/key.py
-index 75777ede06..59090c979c 100644
+index 16d20b1303..3b931152cc 100644
--- a/salt/key.py
+++ b/salt/key.py
-@@ -11,6 +11,7 @@ import fnmatch
+@@ -9,6 +9,7 @@ import itertools
import logging
import os
import shutil
+import sys
- # Import salt libs
import salt.cache
-@@ -652,17 +653,27 @@ class Key(object):
+ import salt.client
+@@ -643,17 +644,27 @@ class Key:
keydirs.append(self.REJ)
if include_denied:
keydirs.append(self.DEN)
@@ -112,7 +112,7 @@
)
eload = {"result": True, "act": "accept", "id": key}
self.event.fire_event(eload, salt.utils.event.tagify(prefix="key"))
- except (IOError, OSError):
+ except OSError:
pass
+ for keydir, key in invalid_keys:
+ matches[keydir].remove(key)
@@ -121,10 +121,10 @@
def accept_all(self):
diff --git a/salt/transport/mixins/auth.py b/salt/transport/mixins/auth.py
-index 003cbd8275..0f0c615408 100644
+index 102af568f3..29b38d3027 100644
--- a/salt/transport/mixins/auth.py
+++ b/salt/transport/mixins/auth.py
-@@ -184,11 +184,11 @@ class AESReqServerMixin(object):
+@@ -174,11 +174,11 @@ class AESReqServerMixin:
tagged "auth" and returns a dict with information about the auth
event
@@ -141,7 +141,7 @@
"""
if not salt.utils.verify.valid_id(self.opts, load["id"]):
-@@ -460,7 +460,7 @@ class AESReqServerMixin(object):
+@@ -450,7 +450,7 @@ class AESReqServerMixin:
# and an empty request comes in
try:
pub = salt.crypt.get_rsa_pub_key(pubfn)
@@ -151,10 +151,10 @@
return {"enc": "clear", "load": {"ret": False}}
diff --git a/tests/pytests/integration/cli/test_salt_key.py b/tests/pytests/integration/cli/test_salt_key.py
-index 0edb2cf86c..2583348ce6 100644
+index 3ec87fe580..8f29929747 100644
--- a/tests/pytests/integration/cli/test_salt_key.py
+++ b/tests/pytests/integration/cli/test_salt_key.py
-@@ -328,3 +328,31 @@ def test_keys_generation_keysize_max(salt_key_cli):
+@@ -316,3 +316,31 @@ def test_keys_generation_keysize_max(salt_key_cli):
)
assert ret.exitcode != 0
assert "error: The maximum value for keysize is 32768" in ret.stderr
@@ -213,6 +213,6 @@
+ with pytest.raises(salt.crypt.InvalidKeyError):
+ salt.crypt.get_rsa_pub_key(key_path)
--
-2.32.0
+2.33.0
++++++ debian-info_installed-compatibility-50453.patch ++++++
++++ 1215 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/salt/debian-info_installed-compatibility-50453.patch
++++ and /work/SRC/openSUSE:Factory/.salt.new.2443/debian-info_installed-compatibility-50453.patch
++++++ do-not-crash-when-unexpected-cmd-output-at-listing-p.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.828466066 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.832466071 +0200
@@ -1,4 +1,4 @@
-From cec95ba8f9b561d7ca4c66be9483e4b9386cb741 Mon Sep 17 00:00:00 2001
+From f9a66dbf39345b2b371b18e8bf9d89835d6381b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
<psuarezhernandez(a)suse.com>
Date: Mon, 25 Jan 2021 12:15:59 +0000
@@ -7,15 +7,15 @@
Add unit tests to cover unexpected output when listing patches
---
- salt/modules/yumpkg.py | 20 ++++++++--
- tests/unit/modules/test_yumpkg.py | 63 +++++++++++++++++++++++++++++++
- 2 files changed, 80 insertions(+), 3 deletions(-)
+ salt/modules/yumpkg.py | 20 +++++++--
+ tests/pytests/unit/modules/test_yumpkg.py | 53 +++++++++++++++++++++++
+ 2 files changed, 70 insertions(+), 3 deletions(-)
diff --git a/salt/modules/yumpkg.py b/salt/modules/yumpkg.py
-index df174e737d..82adbbd59d 100644
+index fd79109e40..c800dafa82 100644
--- a/salt/modules/yumpkg.py
+++ b/salt/modules/yumpkg.py
-@@ -3291,10 +3291,17 @@ def _get_patches(installed_only=False):
+@@ -3325,10 +3325,17 @@ def _get_patches(installed_only=False):
cmd = [_yum(), "--quiet", "updateinfo", "list", "all"]
ret = __salt__["cmd.run_stdout"](cmd, python_shell=False, env={"SALT_RUNNING": "1"})
@@ -36,7 +36,7 @@
if advisory_id not in patches:
patches[advisory_id] = {
"installed": True if inst == "i" else False,
-@@ -3305,6 +3312,13 @@ def _get_patches(installed_only=False):
+@@ -3339,6 +3346,13 @@ def _get_patches(installed_only=False):
if inst != "i":
patches[advisory_id]["installed"] = False
@@ -50,81 +50,71 @@
if installed_only:
patches = {k: v for k, v in patches.items() if v["installed"]}
return patches
-diff --git a/tests/unit/modules/test_yumpkg.py b/tests/unit/modules/test_yumpkg.py
-index b97e82d307..96d3f12b17 100644
---- a/tests/unit/modules/test_yumpkg.py
-+++ b/tests/unit/modules/test_yumpkg.py
-@@ -383,6 +383,69 @@ class YumTestCase(TestCase, LoaderModuleMockMixin):
- _patch in patches["my-fake-patch-installed-1234"]["summary"]
- )
+diff --git a/tests/pytests/unit/modules/test_yumpkg.py b/tests/pytests/unit/modules/test_yumpkg.py
+index ef7100fe9d..df01853927 100644
+--- a/tests/pytests/unit/modules/test_yumpkg.py
++++ b/tests/pytests/unit/modules/test_yumpkg.py
+@@ -420,6 +420,59 @@ def test_list_patches():
+ assert _patch in patches["my-fake-patch-installed-1234"]["summary"]
-+ def test_list_patches_with_unexpected_output(self):
-+ """
-+ Test patches listin with unexpected output from updateinfo list
-+
-+ :return:
-+ """
-+ yum_out = [
-+ "Update notice RHBA-2014:0722 (from rhel7-dev-rhel7-rpm-x86_64) is broken, or a bad duplicate, skipping.",
-+ "You should report this problem to the owner of the rhel7-dev-rhel7-rpm-x86_64 repository.",
-+ 'To help pinpoint the issue, please attach the output of "yum updateinfo --verbose" to the report.',
-+ "Update notice RHSA-2014:1971 (from rhel7-dev-rhel7-rpm-x86_64) is broken, or a bad duplicate, skipping.",
-+ "Update notice RHSA-2015:1981 (from rhel7-dev-rhel7-rpm-x86_64) is broken, or a bad duplicate, skipping.",
-+ "Update notice RHSA-2015:0067 (from rhel7-dev-rhel7-rpm-x86_64) is broken, or a bad duplicate, skipping",
-+ "i my-fake-patch-not-installed-1234 recommended spacewalk-usix-2.7.5.2-2.2.noarch",
-+ " my-fake-patch-not-installed-1234 recommended spacewalksd-5.0.26.2-21.2.x86_64",
-+ "i my-fake-patch-not-installed-1234 recommended suseRegisterInfo-3.1.1-18.2.x86_64",
-+ "i my-fake-patch-installed-1234 recommended my-package-one-1.1-0.1.x86_64",
-+ "i my-fake-patch-installed-1234 recommended my-package-two-1.1-0.1.x86_64",
-+ ]
-+
-+ expected_patches = {
-+ "my-fake-patch-not-installed-1234": {
-+ "installed": False,
-+ "summary": [
-+ "spacewalk-usix-2.7.5.2-2.2.noarch",
-+ "spacewalksd-5.0.26.2-21.2.x86_64",
-+ "suseRegisterInfo-3.1.1-18.2.x86_64",
-+ ],
-+ },
-+ "my-fake-patch-installed-1234": {
-+ "installed": True,
-+ "summary": [
-+ "my-package-one-1.1-0.1.x86_64",
-+ "my-package-two-1.1-0.1.x86_64",
-+ ],
-+ },
-+ }
-+
-+ with patch.dict(yumpkg.__grains__, {"osarch": "x86_64"}), patch.dict(
-+ yumpkg.__salt__,
-+ {"cmd.run_stdout": MagicMock(return_value=os.linesep.join(yum_out))},
-+ ):
-+ patches = yumpkg.list_patches()
-+ self.assertFalse(patches["my-fake-patch-not-installed-1234"]["installed"])
-+ self.assertTrue(
-+ len(patches["my-fake-patch-not-installed-1234"]["summary"]) == 3
-+ )
-+ for _patch in expected_patches["my-fake-patch-not-installed-1234"][
-+ "summary"
-+ ]:
-+ self.assertTrue(
-+ _patch in patches["my-fake-patch-not-installed-1234"]["summary"]
-+ )
-+
-+ self.assertTrue(patches["my-fake-patch-installed-1234"]["installed"])
-+ self.assertTrue(
-+ len(patches["my-fake-patch-installed-1234"]["summary"]) == 2
-+ )
-+ for _patch in expected_patches["my-fake-patch-installed-1234"]["summary"]:
-+ self.assertTrue(
-+ _patch in patches["my-fake-patch-installed-1234"]["summary"]
-+ )
+
++def test_list_patches_with_unexpected_output():
++ """
++ Test patches listin with unexpected output from updateinfo list
++
++ :return:
++ """
++ yum_out = [
++ "Update notice RHBA-2014:0722 (from rhel7-dev-rhel7-rpm-x86_64) is broken, or a bad duplicate, skipping.",
++ "You should report this problem to the owner of the rhel7-dev-rhel7-rpm-x86_64 repository.",
++ 'To help pinpoint the issue, please attach the output of "yum updateinfo --verbose" to the report.',
++ "Update notice RHSA-2014:1971 (from rhel7-dev-rhel7-rpm-x86_64) is broken, or a bad duplicate, skipping.",
++ "Update notice RHSA-2015:1981 (from rhel7-dev-rhel7-rpm-x86_64) is broken, or a bad duplicate, skipping.",
++ "Update notice RHSA-2015:0067 (from rhel7-dev-rhel7-rpm-x86_64) is broken, or a bad duplicate, skipping",
++ "i my-fake-patch-not-installed-1234 recommended spacewalk-usix-2.7.5.2-2.2.noarch",
++ " my-fake-patch-not-installed-1234 recommended spacewalksd-5.0.26.2-21.2.x86_64",
++ "i my-fake-patch-not-installed-1234 recommended suseRegisterInfo-3.1.1-18.2.x86_64",
++ "i my-fake-patch-installed-1234 recommended my-package-one-1.1-0.1.x86_64",
++ "i my-fake-patch-installed-1234 recommended my-package-two-1.1-0.1.x86_64",
++ ]
++
++ expected_patches = {
++ "my-fake-patch-not-installed-1234": {
++ "installed": False,
++ "summary": [
++ "spacewalk-usix-2.7.5.2-2.2.noarch",
++ "spacewalksd-5.0.26.2-21.2.x86_64",
++ "suseRegisterInfo-3.1.1-18.2.x86_64",
++ ],
++ },
++ "my-fake-patch-installed-1234": {
++ "installed": True,
++ "summary": [
++ "my-package-one-1.1-0.1.x86_64",
++ "my-package-two-1.1-0.1.x86_64",
++ ],
++ },
++ }
++
++ with patch.dict(yumpkg.__grains__, {"osarch": "x86_64"}), patch.dict(
++ yumpkg.__salt__,
++ {"cmd.run_stdout": MagicMock(return_value=os.linesep.join(yum_out))},
++ ):
++ patches = yumpkg.list_patches()
++ assert not patches["my-fake-patch-not-installed-1234"]["installed"]
++ assert len(patches["my-fake-patch-not-installed-1234"]["summary"]) == 3
++ for _patch in expected_patches["my-fake-patch-not-installed-1234"]["summary"]:
++ assert _patch in patches["my-fake-patch-not-installed-1234"]["summary"]
++ assert patches["my-fake-patch-installed-1234"]["installed"]
++ assert len(patches["my-fake-patch-installed-1234"]["summary"]) == 2
++ for _patch in expected_patches["my-fake-patch-installed-1234"]["summary"]:
++ assert _patch in patches["my-fake-patch-installed-1234"]["summary"]
++
+
- def test_latest_version_with_options(self):
- with patch.object(yumpkg, "list_pkgs", MagicMock(return_value={})):
+ def test_latest_version_with_options():
+ with patch.object(yumpkg, "list_pkgs", MagicMock(return_value={})):
--
-2.29.2
+2.33.0
++++++ do-not-load-pip-state-if-there-is-no-3rd-party-depen.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.840466080 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.840466080 +0200
@@ -1,4 +1,4 @@
-From 57f9da0bd7727c46eab866941fee46a3eaf8c8ea Mon Sep 17 00:00:00 2001
+From e0b91c626c10b29d328fa92415393cd57bb4c962 Mon Sep 17 00:00:00 2001
From: Bo Maryniuk <bo(a)suse.de>
Date: Fri, 21 Sep 2018 17:31:39 +0200
Subject: [PATCH] Do not load pip state if there is no 3rd party
@@ -6,39 +6,16 @@
Safe import 3rd party dependency
---
- salt/modules/pip.py | 93 ++++++++++++++++++++++++---------------------
- 1 file changed, 50 insertions(+), 43 deletions(-)
+ salt/modules/pip.py | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/salt/modules/pip.py b/salt/modules/pip.py
-index f7c101f6e4..742e0dd48a 100644
+index f68cafaeaf..14cfafed4b 100644
--- a/salt/modules/pip.py
+++ b/salt/modules/pip.py
-@@ -1,4 +1,3 @@
--# -*- coding: utf-8 -*-
- r"""
- Install Python packages with pip to either the system or a virtualenv
-
-@@ -77,9 +76,7 @@ of the 2015.5 branch:
- The issue is described here: https://github.com/saltstack/salt/issues/46163
-
- """
--from __future__ import absolute_import, print_function, unicode_literals
-
--# Import python libs
- import logging
- import os
- import re
-@@ -89,7 +86,6 @@ import tempfile
-
- import pkg_resources # pylint: disable=3rd-party-module-not-gated
-
--# Import Salt libs
- import salt.utils.data
- import salt.utils.files
- import salt.utils.json
-@@ -101,6 +97,12 @@ import salt.utils.versions
+@@ -96,6 +96,12 @@ import salt.utils.url
+ import salt.utils.versions
from salt.exceptions import CommandExecutionError, CommandNotFoundError
- from salt.ext import six
+try:
+ import pkg_resources
@@ -47,9 +24,9 @@
+
+
# This needs to be named logger so we don't shadow it in pip.install
- logger = logging.getLogger(__name__) # pylint: disable=C0103
+ logger = logging.getLogger(__name__) # pylint: disable=invalid-name
-@@ -118,7 +120,12 @@ def __virtual__():
+@@ -113,7 +119,12 @@ def __virtual__():
entire filesystem. If it's not installed in a conventional location, the
user is required to provide the location of pip each time it is used.
"""
@@ -63,298 +40,7 @@
def _pip_bin_env(cwd, bin_env):
-@@ -140,7 +147,7 @@ def _clear_context(bin_env=None):
- """
- contextkey = "pip.version"
- if bin_env is not None:
-- contextkey = "{0}.{1}".format(contextkey, bin_env)
-+ contextkey = "{}.{}".format(contextkey, bin_env)
- __context__.pop(contextkey, None)
-
-
-@@ -196,7 +203,7 @@ def _get_pip_bin(bin_env):
- bin_path,
- )
- raise CommandNotFoundError(
-- "Could not find a pip binary in virtualenv {0}".format(bin_env)
-+ "Could not find a pip binary in virtualenv {}".format(bin_env)
- )
-
- # bin_env is the python or pip binary
-@@ -209,11 +216,11 @@ def _get_pip_bin(bin_env):
- return [os.path.normpath(bin_env)]
-
- raise CommandExecutionError(
-- "Could not find a pip binary within {0}".format(bin_env)
-+ "Could not find a pip binary within {}".format(bin_env)
- )
- else:
- raise CommandNotFoundError(
-- "Access denied to {0}, could not find a pip binary".format(bin_env)
-+ "Access denied to {}, could not find a pip binary".format(bin_env)
- )
-
-
-@@ -283,7 +290,7 @@ def _resolve_requirements_chain(requirements):
-
- chain = []
-
-- if isinstance(requirements, six.string_types):
-+ if isinstance(requirements, str):
- requirements = [requirements]
-
- for req_file in requirements:
-@@ -300,7 +307,7 @@ def _process_requirements(requirements, cmd, cwd, saltenv, user):
- cleanup_requirements = []
-
- if requirements is not None:
-- if isinstance(requirements, six.string_types):
-+ if isinstance(requirements, str):
- requirements = [r.strip() for r in requirements.split(",")]
- elif not isinstance(requirements, list):
- raise TypeError("requirements must be a string or list")
-@@ -314,7 +321,7 @@ def _process_requirements(requirements, cmd, cwd, saltenv, user):
- if not cached_requirements:
- ret = {
- "result": False,
-- "comment": "pip requirements file '{0}' not found".format(
-+ "comment": "pip requirements file '{}' not found".format(
- requirement
- ),
- }
-@@ -412,15 +419,15 @@ def _format_env_vars(env_vars):
- ret = {}
- if env_vars:
- if isinstance(env_vars, dict):
-- for key, val in six.iteritems(env_vars):
-- if not isinstance(key, six.string_types):
-+ for key, val in env_vars.items():
-+ if not isinstance(key, str):
- key = str(key) # future lint: disable=blacklisted-function
-- if not isinstance(val, six.string_types):
-+ if not isinstance(val, str):
- val = str(val) # future lint: disable=blacklisted-function
- ret[key] = val
- else:
- raise CommandExecutionError(
-- "env_vars {0} is not a dictionary".format(env_vars)
-+ "env_vars {} is not a dictionary".format(env_vars)
- )
- return ret
-
-@@ -762,9 +769,9 @@ def install(
-
- if log:
- if os.path.isdir(log):
-- raise IOError("'{0}' is a directory. Use --log path_to_file".format(log))
-+ raise OSError("'{}' is a directory. Use --log path_to_file".format(log))
- elif not os.access(log, os.W_OK):
-- raise IOError("'{0}' is not writeable".format(log))
-+ raise OSError("'{}' is not writeable".format(log))
-
- cmd.extend(["--log", log])
-
-@@ -790,12 +797,12 @@ def install(
- int(timeout)
- except ValueError:
- raise ValueError(
-- "'{0}' is not a valid timeout, must be an integer".format(timeout)
-+ "'{}' is not a valid timeout, must be an integer".format(timeout)
- )
- cmd.extend(["--timeout", timeout])
-
- if find_links:
-- if isinstance(find_links, six.string_types):
-+ if isinstance(find_links, str):
- find_links = [l.strip() for l in find_links.split(",")]
-
- for link in find_links:
-@@ -803,7 +810,7 @@ def install(
- salt.utils.url.validate(link, VALID_PROTOS) or os.path.exists(link)
- ):
- raise CommandExecutionError(
-- "'{0}' is not a valid URL or path".format(link)
-+ "'{}' is not a valid URL or path".format(link)
- )
- cmd.extend(["--find-links", link])
-
-@@ -815,13 +822,13 @@ def install(
-
- if index_url:
- if not salt.utils.url.validate(index_url, VALID_PROTOS):
-- raise CommandExecutionError("'{0}' is not a valid URL".format(index_url))
-+ raise CommandExecutionError("'{}' is not a valid URL".format(index_url))
- cmd.extend(["--index-url", index_url])
-
- if extra_index_url:
- if not salt.utils.url.validate(extra_index_url, VALID_PROTOS):
- raise CommandExecutionError(
-- "'{0}' is not a valid URL".format(extra_index_url)
-+ "'{}' is not a valid URL".format(extra_index_url)
- )
- cmd.extend(["--extra-index-url", extra_index_url])
-
-@@ -836,13 +843,13 @@ def install(
- " use index_url and/or extra_index_url instead"
- )
-
-- if isinstance(mirrors, six.string_types):
-+ if isinstance(mirrors, str):
- mirrors = [m.strip() for m in mirrors.split(",")]
-
- cmd.append("--use-mirrors")
- for mirror in mirrors:
- if not mirror.startswith("http://"):
-- raise CommandExecutionError("'{0}' is not a valid URL".format(mirror))
-+ raise CommandExecutionError("'{}' is not a valid URL".format(mirror))
- cmd.extend(["--mirrors", mirror])
-
- if disable_version_check:
-@@ -883,7 +890,7 @@ def install(
- if exists_action.lower() not in ("s", "i", "w", "b"):
- raise CommandExecutionError(
- "The exists_action pip option only supports the values "
-- "s, i, w, and b. '{0}' is not valid.".format(exists_action)
-+ "s, i, w, and b. '{}' is not valid.".format(exists_action)
- )
- cmd.extend(["--exists-action", exists_action])
-
-@@ -911,14 +918,14 @@ def install(
- cmd.extend(["--cert", cert])
-
- if global_options:
-- if isinstance(global_options, six.string_types):
-+ if isinstance(global_options, str):
- global_options = [go.strip() for go in global_options.split(",")]
-
- for opt in global_options:
- cmd.extend(["--global-option", opt])
-
- if install_options:
-- if isinstance(install_options, six.string_types):
-+ if isinstance(install_options, str):
- install_options = [io.strip() for io in install_options.split(",")]
-
- for opt in install_options:
-@@ -929,7 +936,7 @@ def install(
- try:
- pkgs = [p.strip() for p in pkgs.split(",")]
- except AttributeError:
-- pkgs = [p.strip() for p in six.text_type(pkgs).split(",")]
-+ pkgs = [p.strip() for p in str(pkgs).split(",")]
- pkgs = salt.utils.data.stringify(salt.utils.data.decode_list(pkgs))
-
- # It's possible we replaced version-range commas with semicolons so
-@@ -945,7 +952,7 @@ def install(
-
- if editable:
- egg_match = re.compile(r"(?:#|#.*?&)egg=([^&]*)")
-- if isinstance(editable, six.string_types):
-+ if isinstance(editable, str):
- editable = [e.strip() for e in editable.split(",")]
-
- for entry in editable:
-@@ -964,14 +971,14 @@ def install(
- cmd.append("--allow-all-external")
-
- if allow_external:
-- if isinstance(allow_external, six.string_types):
-+ if isinstance(allow_external, str):
- allow_external = [p.strip() for p in allow_external.split(",")]
-
- for pkg in allow_external:
- cmd.extend(["--allow-external", pkg])
-
- if allow_unverified:
-- if isinstance(allow_unverified, six.string_types):
-+ if isinstance(allow_unverified, str):
- allow_unverified = [p.strip() for p in allow_unverified.split(",")]
-
- for pkg in allow_unverified:
-@@ -1106,8 +1113,8 @@ def uninstall(
- try:
- # TODO make this check if writeable
- os.path.exists(log)
-- except IOError:
-- raise IOError("'{0}' is not writeable".format(log))
-+ except OSError:
-+ raise OSError("'{}' is not writeable".format(log))
-
- cmd.extend(["--log", log])
-
-@@ -1133,12 +1140,12 @@ def uninstall(
- int(timeout)
- except ValueError:
- raise ValueError(
-- "'{0}' is not a valid timeout, must be an integer".format(timeout)
-+ "'{}' is not a valid timeout, must be an integer".format(timeout)
- )
- cmd.extend(["--timeout", timeout])
-
- if pkgs:
-- if isinstance(pkgs, six.string_types):
-+ if isinstance(pkgs, str):
- pkgs = [p.strip() for p in pkgs.split(",")]
- if requirements:
- for requirement in requirements:
-@@ -1323,7 +1330,7 @@ def version(bin_env=None, cwd=None, user=None):
- cwd = _pip_bin_env(cwd, bin_env)
- contextkey = "pip.version"
- if bin_env is not None:
-- contextkey = "{0}.{1}".format(contextkey, bin_env)
-+ contextkey = "{}.{}".format(contextkey, bin_env)
-
- if contextkey in __context__:
- return __context__[contextkey]
-@@ -1402,7 +1409,7 @@ def list_upgrades(bin_env=None, user=None, cwd=None):
- if match:
- name, version_ = match.groups()
- else:
-- logger.error("Can't parse line '{0}'".format(line))
-+ logger.error("Can't parse line '{}'".format(line))
- continue
- packages[name] = version_
-
-@@ -1414,7 +1421,7 @@ def list_upgrades(bin_env=None, user=None, cwd=None):
- raise CommandExecutionError("Invalid JSON", info=result)
-
- for pkg in pkgs:
-- packages[pkg["name"]] = "{0} [{1}]".format(
-+ packages[pkg["name"]] = "{} [{}]".format(
- pkg["latest_version"], pkg["latest_filetype"]
- )
-
-@@ -1602,17 +1609,17 @@ def list_all_versions(
- """
- cwd = _pip_bin_env(cwd, bin_env)
- cmd = _get_pip_bin(bin_env)
-- cmd.extend(["install", "{0}==versions".format(pkg)])
-+ cmd.extend(["install", "{}==versions".format(pkg)])
-
- if index_url:
- if not salt.utils.url.validate(index_url, VALID_PROTOS):
-- raise CommandExecutionError("'{0}' is not a valid URL".format(index_url))
-+ raise CommandExecutionError("'{}' is not a valid URL".format(index_url))
- cmd.extend(["--index-url", index_url])
-
- if extra_index_url:
- if not salt.utils.url.validate(extra_index_url, VALID_PROTOS):
- raise CommandExecutionError(
-- "'{0}' is not a valid URL".format(extra_index_url)
-+ "'{}' is not a valid URL".format(extra_index_url)
- )
- cmd.extend(["--extra-index-url", extra_index_url])
-
-@@ -1632,7 +1639,7 @@ def list_all_versions(
- if not include_rc:
- filtered.append("rc")
- if filtered:
-- excludes = re.compile(r"^((?!{0}).)*$".format("|".join(filtered)))
-+ excludes = re.compile(r"^((?!{}).)*$".format("|".join(filtered)))
- else:
- excludes = re.compile(r"")
-
--
-2.29.2
+2.33.0
++++++ do-not-monkey-patch-yaml-bsc-1177474.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.848466089 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.848466089 +0200
@@ -1,4 +1,4 @@
-From 8eaeb751d4077d6514577b53a9dbe23df231018e Mon Sep 17 00:00:00 2001
+From e82c8832aed9ef46f5021558758ef9d944d89214 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
<psuarezhernandez(a)suse.com>
Date: Mon, 8 Mar 2021 12:35:14 +0000
@@ -127,19 +127,19 @@
),
value_node.start_mark,
diff --git a/tests/unit/utils/test_yamlloader.py b/tests/unit/utils/test_yamlloader.py
-index a1e17af760..3f2e4403ba 100644
+index e1d60aeed0..a5de963817 100644
--- a/tests/unit/utils/test_yamlloader.py
+++ b/tests/unit/utils/test_yamlloader.py
-@@ -13,7 +13,7 @@ import salt.utils.files
+@@ -5,7 +5,7 @@
+ import textwrap
- # Import 3rd-party libs
- from salt.ext import six
+ import salt.utils.files
-from salt.utils.yamlloader import SaltYamlSafeLoader
+from salt.utils.yamlloader import SaltYamlSafeLoader, yaml
from tests.support.mock import mock_open, patch
-
- # Import Salt Testing Libs
-@@ -177,3 +177,7 @@ class YamlLoaderTestCase(TestCase):
+ from tests.support.unit import TestCase
+ from yaml.constructor import ConstructorError
+@@ -133,3 +133,7 @@ class YamlLoaderTestCase(TestCase):
),
{"foo": {"b": {"foo": "bar", "one": 1, "list": [1, "two", 3]}}},
)
@@ -148,6 +148,6 @@
+ if hasattr(yaml, "CSafeLoader"):
+ assert yaml.SafeLoader != yaml.CSafeLoader
--
-2.30.1
+2.33.0
++++++ early-feature-support-config.patch ++++++
++++ 2068 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/salt/early-feature-support-config.patch
++++ and /work/SRC/openSUSE:Factory/.salt.new.2443/early-feature-support-config.patch
++++++ enhance-openscap-module-add-xccdf_eval-call-386.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.876466121 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.876466121 +0200
@@ -1,4 +1,4 @@
-From 1fd51c17bc03e679a040f2c6d9ac107a2c57b7c8 Mon Sep 17 00:00:00 2001
+From 9071189b7395284f0328b59c999c18919e12ae32 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
<psuarezhernandez(a)suse.com>
Date: Wed, 7 Jul 2021 15:41:48 +0100
@@ -13,11 +13,13 @@
* Add changes suggested by pre-commit
Co-authored-by: Michael Calmer <mc(a)suse.de>
+
+Fix error handling in openscap module (bsc#1188647) (#409)
---
changelog/59756.added | 1 +
- salt/modules/openscap.py | 120 ++++++++++++-
- tests/unit/modules/test_openscap.py | 262 +++++++++++++++++++++++++---
- 3 files changed, 353 insertions(+), 30 deletions(-)
+ salt/modules/openscap.py | 126 +++++++++++++--
+ tests/unit/modules/test_openscap.py | 234 ++++++++++++++++++++++++++++
+ 3 files changed, 352 insertions(+), 9 deletions(-)
create mode 100644 changelog/59756.added
diff --git a/changelog/59756.added b/changelog/59756.added
@@ -28,7 +30,7 @@
@@ -0,0 +1 @@
+adding new call for openscap xccdf eval supporting new parameters
diff --git a/salt/modules/openscap.py b/salt/modules/openscap.py
-index 6f8ff4a76d..f75e1c5e6b 100644
+index 6f8ff4a76d..216fd89eef 100644
--- a/salt/modules/openscap.py
+++ b/salt/modules/openscap.py
@@ -1,20 +1,15 @@
@@ -62,7 +64,7 @@
self.add_argument("action", choices=["eval"])
add_arg = None
for params, kwparams in _XCCDF_MAP["eval"]["parser_arguments"]:
-@@ -61,6 +56,115 @@ _OSCAP_EXIT_CODES_MAP = {
+@@ -61,6 +56,117 @@ _OSCAP_EXIT_CODES_MAP = {
}
@@ -163,7 +165,9 @@
+ tempdir = tempfile.mkdtemp()
+ proc = Popen(cmd_opts, stdout=PIPE, stderr=PIPE, cwd=tempdir)
+ (stdoutdata, error) = proc.communicate()
-+ success = _OSCAP_EXIT_CODES_MAP[proc.returncode]
++ success = _OSCAP_EXIT_CODES_MAP.get(proc.returncode, False)
++ if proc.returncode < 0:
++ error += "\nKilled by signal {}\n".format(proc.returncode).encode('ascii')
+ returncode = proc.returncode
+ if success:
+ __salt__["cp.push_dir"](tempdir)
@@ -178,7 +182,7 @@
def xccdf(params):
"""
Run ``oscap xccdf`` commands on minions.
-@@ -91,7 +195,7 @@ def xccdf(params):
+@@ -91,14 +197,16 @@ def xccdf(params):
args, argv = _ArgumentParser(action=action).parse_known_args(args=params)
except Exception as err: # pylint: disable=broad-except
success = False
@@ -187,30 +191,21 @@
if success:
cmd = _XCCDF_MAP[action]["cmd_pattern"].format(args.profile, policy)
+ tempdir = tempfile.mkdtemp()
+ proc = Popen(shlex.split(cmd), stdout=PIPE, stderr=PIPE, cwd=tempdir)
+ (stdoutdata, error) = proc.communicate()
+- success = _OSCAP_EXIT_CODES_MAP[proc.returncode]
++ success = _OSCAP_EXIT_CODES_MAP.get(proc.returncode, False)
++ if proc.returncode < 0:
++ error += "\nKilled by signal {}\n".format(proc.returncode).encode('ascii')
+ returncode = proc.returncode
+ if success:
+ __salt__["cp.push_dir"](tempdir)
diff --git a/tests/unit/modules/test_openscap.py b/tests/unit/modules/test_openscap.py
-index 04cf00a1d3..e5be151bf2 100644
+index 045c37f7c9..301c1869ec 100644
--- a/tests/unit/modules/test_openscap.py
+++ b/tests/unit/modules/test_openscap.py
-@@ -1,18 +1,8 @@
--# -*- coding: utf-8 -*-
--
--# Import python libs
--from __future__ import absolute_import, print_function, unicode_literals
--
- from subprocess import PIPE
-
--# Import salt libs
- import salt.modules.openscap as openscap
--
--# Import 3rd-party libs
- from salt.ext import six
- from tests.support.mock import MagicMock, Mock, patch
--
--# Import salt test libs
- from tests.support.unit import TestCase
-
-
-@@ -32,6 +22,7 @@ class OpenscapTestCase(TestCase):
+@@ -21,6 +21,7 @@ class OpenscapTestCase(TestCase):
"salt.modules.openscap.tempfile.mkdtemp",
Mock(return_value=self.random_temp_dir),
),
@@ -218,60 +213,7 @@
]
for patcher in patchers:
self.apply_patch(patcher)
-@@ -50,7 +41,7 @@ class OpenscapTestCase(TestCase):
- ),
- ):
- response = openscap.xccdf(
-- "eval --profile Default {0}".format(self.policy_file)
-+ "eval --profile Default {}".format(self.policy_file)
- )
-
- self.assertEqual(openscap.tempfile.mkdtemp.call_count, 1)
-@@ -97,7 +88,7 @@ class OpenscapTestCase(TestCase):
- ),
- ):
- response = openscap.xccdf(
-- "eval --profile Default {0}".format(self.policy_file)
-+ "eval --profile Default {}".format(self.policy_file)
- )
-
- self.assertEqual(openscap.tempfile.mkdtemp.call_count, 1)
-@@ -136,10 +127,7 @@ class OpenscapTestCase(TestCase):
-
- def test_openscap_xccdf_eval_fail_no_profile(self):
- response = openscap.xccdf("eval --param Default /unknown/param")
-- if six.PY2:
-- error = "argument --profile is required"
-- else:
-- error = "the following arguments are required: --profile"
-+ error = "the following arguments are required: --profile"
- self.assertEqual(
- response,
- {"error": error, "upload_dir": None, "success": False, "returncode": None},
-@@ -199,7 +187,7 @@ class OpenscapTestCase(TestCase):
- ),
- ):
- response = openscap.xccdf(
-- "eval --profile Default {0}".format(self.policy_file)
-+ "eval --profile Default {}".format(self.policy_file)
- )
-
- self.assertEqual(
-@@ -213,11 +201,8 @@ class OpenscapTestCase(TestCase):
- )
-
- def test_openscap_xccdf_eval_fail_not_implemented_action(self):
-- response = openscap.xccdf("info {0}".format(self.policy_file))
-- if six.PY2:
-- mock_err = "argument action: invalid choice: 'info' (choose from u'eval')"
-- else:
-- mock_err = "argument action: invalid choice: 'info' (choose from 'eval')"
-+ response = openscap.xccdf("info {}".format(self.policy_file))
-+ mock_err = "argument action: invalid choice: 'info' (choose from 'eval')"
-
- self.assertEqual(
- response,
-@@ -228,3 +213,236 @@ class OpenscapTestCase(TestCase):
+@@ -211,3 +212,236 @@ class OpenscapTestCase(TestCase):
"returncode": None,
},
)
@@ -310,8 +252,8 @@
+ openscap.Popen.assert_called_once_with(
+ expected_cmd,
+ cwd=openscap.tempfile.mkdtemp.return_value,
-+ stderr=PIPE,
-+ stdout=PIPE,
++ stderr=subprocess.PIPE,
++ stdout=subprocess.PIPE,
+ )
+ openscap.__salt__["cp.push_dir"].assert_called_once_with(
+ self.random_temp_dir
@@ -364,8 +306,8 @@
+ openscap.Popen.assert_called_once_with(
+ expected_cmd,
+ cwd=openscap.tempfile.mkdtemp.return_value,
-+ stderr=PIPE,
-+ stdout=PIPE,
++ stderr=subprocess.PIPE,
++ stdout=subprocess.PIPE,
+ )
+ openscap.__salt__["cp.push_dir"].assert_called_once_with(
+ self.random_temp_dir
@@ -415,8 +357,8 @@
+ openscap.Popen.assert_called_once_with(
+ expected_cmd,
+ cwd=openscap.tempfile.mkdtemp.return_value,
-+ stderr=PIPE,
-+ stdout=PIPE,
++ stderr=subprocess.PIPE,
++ stdout=subprocess.PIPE,
+ )
+ openscap.__salt__["cp.push_dir"].assert_called_once_with(
+ self.random_temp_dir
@@ -475,8 +417,8 @@
+ openscap.Popen.assert_called_once_with(
+ expected_cmd,
+ cwd=openscap.tempfile.mkdtemp.return_value,
-+ stderr=PIPE,
-+ stdout=PIPE,
++ stderr=subprocess.PIPE,
++ stdout=subprocess.PIPE,
+ )
+
+ def test_new_openscap_xccdf_eval_evaluation_error(self):
@@ -509,6 +451,6 @@
+ },
+ )
--
-2.32.0
+2.33.0
++++++ figure-out-python-interpreter-to-use-inside-containe.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.884466130 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.884466130 +0200
@@ -1,9 +1,8 @@
-From 271826b0baa6b2281bc2eac9118a0fcc4675f106 Mon Sep 17 00:00:00 2001
+From 1b54843abe5fad0bac844d6d5d9707df3e501aae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
<psuarezhernandez(a)suse.com>
Date: Wed, 19 May 2021 16:24:27 +0100
-Subject: [PATCH] Figure out Python interpreter to use inside
- containers
+Subject: [PATCH] Figure out Python interpreter to use inside containers
Fix unit test for dockermod.call function
---
@@ -12,10 +11,10 @@
2 files changed, 41 insertions(+), 17 deletions(-)
diff --git a/salt/modules/dockermod.py b/salt/modules/dockermod.py
-index 176b4db926..cad307e7af 100644
+index ab2296a945..6d60a9a5aa 100644
--- a/salt/modules/dockermod.py
+++ b/salt/modules/dockermod.py
-@@ -217,7 +217,6 @@ import re
+@@ -209,7 +209,6 @@ import re
import shutil
import string
import subprocess
@@ -23,7 +22,7 @@
import time
import uuid
-@@ -6865,9 +6864,32 @@ def call(name, function, *args, **kwargs):
+@@ -6728,9 +6727,32 @@ def call(name, function, *args, **kwargs):
name, thin_path, os.path.join(thin_dest_path, os.path.basename(thin_path))
)
@@ -55,22 +54,22 @@
- "python",
+ container_python_bin,
"-c",
- ("import tarfile; " 'tarfile.open("{0}/{1}").extractall(path="{0}")').format(
- thin_dest_path, os.path.basename(thin_path)
-@@ -6880,7 +6902,7 @@ def call(name, function, *args, **kwargs):
+ "import tarfile; "
+ 'tarfile.open("{0}/{1}").extractall(path="{0}")'.format(
+@@ -6744,7 +6766,7 @@ def call(name, function, *args, **kwargs):
try:
salt_argv = (
[
-- "python{0}".format(sys.version_info[0]),
+- "python{}".format(sys.version_info[0]),
+ container_python_bin,
os.path.join(thin_dest_path, "salt-call"),
"--metadata",
"--local",
diff --git a/tests/unit/modules/test_dockermod.py b/tests/unit/modules/test_dockermod.py
-index 48526acb71..ebe97a83f5 100644
+index 2c3665de85..fcedaf9272 100644
--- a/tests/unit/modules/test_dockermod.py
+++ b/tests/unit/modules/test_dockermod.py
-@@ -1049,33 +1049,35 @@ class DockerTestCase(TestCase, LoaderModuleMockMixin):
+@@ -987,33 +987,35 @@ class DockerTestCase(TestCase, LoaderModuleMockMixin):
# [ call(name, [args]), ...
self.maxDiff = None
self.assertIn("mkdir", docker_run_all_mock.mock_calls[0][1][1])
@@ -121,6 +120,6 @@
self.assertEqual({"retcode": 0, "comment": "container cmd"}, ret)
--
-2.31.1
+2.33.0
++++++ fix-bsc-1065792.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.896466144 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.896466144 +0200
@@ -1,34 +1,17 @@
-From 1b9a160f578cf446f5ae622a450d23022e7e3ca5 Mon Sep 17 00:00:00 2001
+From 22fe4809712dbc59ba2d8c3c2045f531f81bc517 Mon Sep 17 00:00:00 2001
From: Bo Maryniuk <bo(a)suse.de>
Date: Thu, 14 Dec 2017 16:21:40 +0100
Subject: [PATCH] Fix bsc#1065792
---
- salt/states/service.py | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
+ salt/states/service.py | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/salt/states/service.py b/salt/states/service.py
-index d19c245756..4ea36a78f6 100644
+index 536e64a430..27595f7703 100644
--- a/salt/states/service.py
+++ b/salt/states/service.py
-@@ -56,16 +56,12 @@ set the reload value to True:
- :ref:`Requisites <requisites>` documentation.
-
- """
--# Import Python libs
-
- import time
-
--# Import Salt libs
- import salt.utils.data
- import salt.utils.platform
- from salt.exceptions import CommandExecutionError
--
--# Import 3rd-party libs
- from salt.utils.args import get_function_argspec as _argspec
- from salt.utils.systemd import booted
-
-@@ -79,6 +75,7 @@ def __virtual__():
+@@ -78,6 +78,7 @@ def __virtual__():
Only make these states available if a service provider has been detected or
assigned for this minion
"""
@@ -37,6 +20,6 @@
return __virtualname__
else:
--
-2.29.2
+2.33.0
++++++ fix-exception-in-yumpkg.remove-for-not-installed-pac.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.904466153 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.904466153 +0200
@@ -1,19 +1,19 @@
-From 30a2c8c042f0fe57253a8ab47220d897bc89bd17 Mon Sep 17 00:00:00 2001
+From 9413059223107924c6594e6c72e50fcbcc441e60 Mon Sep 17 00:00:00 2001
From: Victor Zhestkov <35733135+vzhestkov(a)users.noreply.github.com>
Date: Thu, 24 Jun 2021 13:17:13 +0300
Subject: [PATCH] Fix exception in yumpkg.remove for not installed
package (#380)
---
- salt/modules/yumpkg.py | 2 ++
- tests/unit/modules/test_yumpkg.py | 25 +++++++++++++++++++++++++
- 2 files changed, 27 insertions(+)
+ salt/modules/yumpkg.py | 2 ++
+ tests/pytests/unit/modules/test_yumpkg.py | 37 +++++++++++++++++++++++
+ 2 files changed, 39 insertions(+)
diff --git a/salt/modules/yumpkg.py b/salt/modules/yumpkg.py
-index 0fb41a0400..c9f9f2c2d3 100644
+index dd81c6f1e9..273f0fb370 100644
--- a/salt/modules/yumpkg.py
+++ b/salt/modules/yumpkg.py
-@@ -2051,6 +2051,8 @@ def remove(name=None, pkgs=None, **kwargs): # pylint: disable=W0613
+@@ -2087,6 +2087,8 @@ def remove(name=None, pkgs=None, **kwargs): # pylint: disable=W0613
old = list_pkgs()
targets = []
for target in pkg_params:
@@ -22,43 +22,55 @@
version_to_remove = pkg_params[target]
installed_versions = old[target].split(",")
-diff --git a/tests/unit/modules/test_yumpkg.py b/tests/unit/modules/test_yumpkg.py
-index e22c0b9251..373d2e09cb 100644
---- a/tests/unit/modules/test_yumpkg.py
-+++ b/tests/unit/modules/test_yumpkg.py
-@@ -1099,6 +1099,31 @@ class YumTestCase(TestCase, LoaderModuleMockMixin):
- call = cmd_mock.mock_calls[0][1][0]
- assert call == expected, call
+diff --git a/tests/pytests/unit/modules/test_yumpkg.py b/tests/pytests/unit/modules/test_yumpkg.py
+index 7e3ed517ea..b5572db123 100644
+--- a/tests/pytests/unit/modules/test_yumpkg.py
++++ b/tests/pytests/unit/modules/test_yumpkg.py
+@@ -1219,6 +1219,43 @@ def test_install_error_reporting():
+ assert exc_info.value.info == expected, exc_info.value.info
-+ def test_remove_not_existing(self):
-+ """
-+ Test if no exception on removing not installed package
-+ """
-+ name = "foo"
-+ def list_pkgs_mock():
-+ return {}
-+ cmd_mock = MagicMock(
-+ return_value={"pid": 12345, "retcode": 0, "stdout": "", "stderr": ""}
-+ )
-+ salt_mock = {
-+ "cmd.run_all": cmd_mock,
-+ "lowpkg.version_cmp": rpm.version_cmp,
-+ "pkg_resource.parse_targets": MagicMock(
-+ return_value=({name: None}, "repository")
-+ ),
-+ }
-+ with patch.object(yumpkg, "list_pkgs", list_pkgs_mock), patch(
-+ "salt.utils.systemd.has_scope", MagicMock(return_value=False)
-+ ), patch.dict(yumpkg.__salt__, salt_mock):
+
++def test_remove_not_installed():
++ """
++ Tests that no exception raised on removing not installed package
++ """
++ name = "foo"
++ list_pkgs_mock = MagicMock(return_value={})
++ cmd_mock = MagicMock(
++ return_value={"pid": 12345, "retcode": 0, "stdout": "", "stderr": ""}
++ )
++ salt_mock = {
++ "cmd.run_all": cmd_mock,
++ "lowpkg.version_cmp": rpm.version_cmp,
++ "pkg_resource.parse_targets": MagicMock(
++ return_value=({name: None}, "repository")
++ ),
++ }
++ with patch.object(yumpkg, "list_pkgs", list_pkgs_mock), patch(
++ "salt.utils.systemd.has_scope", MagicMock(return_value=False)
++ ), patch.dict(yumpkg.__salt__, salt_mock):
++
++ # Test yum
++ with patch.dict(yumpkg.__context__, {"yum_bin": "yum"}), patch.dict(
++ yumpkg.__grains__, {"os": "CentOS", "osrelease": 7}
++ ):
++ yumpkg.remove(name)
++ cmd_mock.assert_not_called()
++
++ # Test dnf
++ yumpkg.__context__.pop("yum_bin")
++ cmd_mock.reset_mock()
++ with patch.dict(yumpkg.__context__, {"yum_bin": "dnf"}), patch.dict(
++ yumpkg.__grains__, {"os": "Fedora", "osrelease": 27}
++ ):
++ yumpkg.remove(name)
++ cmd_mock.assert_not_called()
+
-+ with patch.dict(yumpkg.__grains__, {"os": "CentOS", "osrelease": 7}):
-+ yumpkg.remove(name)
-+ cmd_mock.assert_not_called()
+
- def test_install_with_epoch(self):
- """
- Tests that we properly identify a version containing an epoch as an
+ def test_upgrade_with_options():
+ with patch.object(yumpkg, "list_pkgs", MagicMock(return_value={})), patch(
+ "salt.utils.systemd.has_scope", MagicMock(return_value=False)
--
-2.32.0
+2.33.0
++++++ fix-wrong-test_mod_del_repo_multiline_values-test-af.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.924466176 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.924466176 +0200
@@ -1,35 +1,35 @@
-From f3ac041e34952a4b753e4afc9dc4b6adaa1d0ff2 Mon Sep 17 00:00:00 2001
+From e3ef9165b66c3d74a3c3dbfe82ba58f7fa1613e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
<psuarezhernandez(a)suse.com>
Date: Thu, 12 Mar 2020 13:26:51 +0000
-Subject: [PATCH] Fix wrong test_mod_del_repo_multiline_values test
- after rebase
+Subject: [PATCH] Fix wrong test_mod_del_repo_multiline_values test after
+ rebase
---
- tests/integration/modules/test_pkg.py | 63 ++++-----------------------
- 1 file changed, 8 insertions(+), 55 deletions(-)
+ tests/integration/modules/test_pkg.py | 34 +++++++++++++++++++++------
+ 1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/tests/integration/modules/test_pkg.py b/tests/integration/modules/test_pkg.py
-index 3ece73074b..933755a9ec 100644
+index ccf69998fc..6a84ea0bc3 100644
--- a/tests/integration/modules/test_pkg.py
+++ b/tests/integration/modules/test_pkg.py
-@@ -143,6 +143,10 @@ class PkgModuleTest(ModuleCase, SaltReturnAssertsMixin):
+@@ -138,6 +138,10 @@ class PkgModuleTest(ModuleCase, SaltReturnAssertsMixin):
self.run_function("pkg.del_repo", [repo])
- @slowTest
-+ @destructiveTest
-+ @requires_salt_modules("pkg.mod_repo", "pkg.del_repo", "pkg.get_repo")
-+ @requires_network()
+ @pytest.mark.slow_test
++ @pytest.mark.destructive_test
++ @pytest.mark.requires_salt_modules("pkg.mod_repo", "pkg.del_repo", "pkg.get_repo")
++ @pytest.mark.requires_network()
+ @requires_system_grains
def test_mod_del_repo_multiline_values(self):
"""
test modifying and deleting a software repository defined with multiline values
-@@ -150,10 +154,13 @@ class PkgModuleTest(ModuleCase, SaltReturnAssertsMixin):
+@@ -145,10 +149,13 @@ class PkgModuleTest(ModuleCase, SaltReturnAssertsMixin):
os_grain = self.run_function("grains.item", ["os"])["os"]
repo = None
try:
-- if os_grain in ["CentOS", "RedHat"]:
-+ if os_grain in ["CentOS", "RedHat", "SUSE"]:
+- if os_grain in ["CentOS", "RedHat", "VMware Photon OS"]:
++ if os_grain in ["CentOS", "RedHat", "VMware Photon OS", "SUSE"]:
my_baseurl = (
"http://my.fake.repo/foo/bar/\n http://my.fake.repo.alt/foo/bar/"
)
@@ -39,68 +39,44 @@
expected_get_repo_baseurl = (
"http://my.fake.repo/foo/bar/\nhttp://my.fake.repo.alt/foo/bar/"
)
-@@ -207,60 +214,6 @@ class PkgModuleTest(ModuleCase, SaltReturnAssertsMixin):
- if repo is not None:
- self.run_function("pkg.del_repo", [repo])
-
-- def test_mod_del_repo_multiline_values(self):
-- """
-- test modifying and deleting a software repository defined with multiline values
-- """
-- os_grain = self.run_function("grains.item", ["os"])["os"]
-- repo = None
-- try:
-- if os_grain in ["CentOS", "RedHat", "SUSE"]:
-- my_baseurl = (
-- "http://my.fake.repo/foo/bar/\n http://my.fake.repo.alt/foo/bar/"
-- )
-- expected_get_repo_baseurl_zypp = (
-- "http://my.fake.repo/foo/bar/%0A%20http://my.fake.repo.alt/foo/bar/"
-- )
-- expected_get_repo_baseurl = (
-- "http://my.fake.repo/foo/bar/\nhttp://my.fake.repo.alt/foo/bar/"
-- )
-- major_release = int(
-- self.run_function("grains.item", ["osmajorrelease"])[
-- "osmajorrelease"
-- ]
-- )
-- repo = "fakerepo"
-- name = "Fake repo for RHEL/CentOS/SUSE"
-- baseurl = my_baseurl
-- gpgkey = "https://my.fake.repo/foo/bar/MY-GPG-KEY.pub"
-- failovermethod = "priority"
-- gpgcheck = 1
-- enabled = 1
-- ret = self.run_function(
-- "pkg.mod_repo",
-- [repo],
-- name=name,
-- baseurl=baseurl,
-- gpgkey=gpgkey,
-- gpgcheck=gpgcheck,
-- enabled=enabled,
-- failovermethod=failovermethod,
-- )
+@@ -174,17 +181,30 @@ class PkgModuleTest(ModuleCase, SaltReturnAssertsMixin):
+ enabled=enabled,
+ failovermethod=failovermethod,
+ )
- # return data from pkg.mod_repo contains the file modified at
- # the top level, so use next(iter(ret)) to get that key
-- self.assertNotEqual(ret, {})
+ self.assertNotEqual(ret, {})
- repo_info = ret[next(iter(ret))]
-- self.assertIn(repo, repo_info)
++ repo_info = {repo: ret}
+ self.assertIn(repo, repo_info)
- self.assertEqual(repo_info[repo]["baseurl"], my_baseurl)
-- ret = self.run_function("pkg.get_repo", [repo])
++ if os_grain == "SUSE":
++ self.assertEqual(
++ repo_info[repo]["baseurl"], expected_get_repo_baseurl_zypp
++ )
++ else:
++ self.assertEqual(repo_info[repo]["baseurl"], my_baseurl)
+ ret = self.run_function("pkg.get_repo", [repo])
- self.assertEqual(ret["baseurl"], expected_get_repo_baseurl)
-- self.run_function("pkg.mod_repo", [repo])
-- ret = self.run_function("pkg.get_repo", [repo])
++ if os_grain == "SUSE":
++ self.assertEqual(
++ repo_info[repo]["baseurl"], expected_get_repo_baseurl_zypp
++ )
++ else:
++ self.assertEqual(ret["baseurl"], expected_get_repo_baseurl)
+ self.run_function("pkg.mod_repo", [repo])
+ ret = self.run_function("pkg.get_repo", [repo])
- self.assertEqual(ret["baseurl"], expected_get_repo_baseurl)
-- finally:
-- if repo is not None:
-- self.run_function("pkg.del_repo", [repo])
--
- @requires_salt_modules("pkg.owner")
- def test_owner(self):
- """
++ if os_grain == "SUSE":
++ self.assertEqual(
++ repo_info[repo]["baseurl"], expected_get_repo_baseurl_zypp
++ )
++ else:
++ self.assertEqual(ret["baseurl"], expected_get_repo_baseurl)
+ finally:
+ if repo is not None:
+ self.run_function("pkg.del_repo", [repo])
--
-2.29.2
+2.33.0
++++++ fixes-56144-to-enable-hotadd-profile-support.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.932466186 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.932466186 +0200
@@ -1,4 +1,4 @@
-From 5761a11227c8d78df62d1a1552a50c0a4b76ae33 Mon Sep 17 00:00:00 2001
+From 0def15837c3470f20ce85ec81e2c1d42cd933c23 Mon Sep 17 00:00:00 2001
From: nicholasmhughes <nicholasmhughes(a)gmail.com>
Date: Fri, 14 Feb 2020 22:03:42 -0500
Subject: [PATCH] fixes #56144 to enable hotadd profile support
@@ -9,7 +9,7 @@
2 files changed, 20 insertions(+)
diff --git a/doc/topics/cloud/vmware.rst b/doc/topics/cloud/vmware.rst
-index e4cb607e8d..0ac7c255a8 100644
+index bbc5cdff11..1a18ebf226 100644
--- a/doc/topics/cloud/vmware.rst
+++ b/doc/topics/cloud/vmware.rst
@@ -457,6 +457,14 @@ Set up an initial profile at ``/etc/salt/cloud.profiles`` or
@@ -28,10 +28,10 @@
Specifies the additional configuration information for the virtual machine. This
describes a set of modifications to the additional options. If the key is already
diff --git a/salt/cloud/clouds/vmware.py b/salt/cloud/clouds/vmware.py
-index 5ebf448abc..edaca9618b 100644
+index 1e9943ad78..4999ca089f 100644
--- a/salt/cloud/clouds/vmware.py
+++ b/salt/cloud/clouds/vmware.py
-@@ -2824,6 +2824,12 @@ def create(vm_):
+@@ -2821,6 +2821,12 @@ def create(vm_):
win_run_once = config.get_cloud_config_value(
"win_run_once", vm_, __opts__, search_global=False, default=None
)
@@ -44,7 +44,7 @@
# Get service instance object
si = _get_si()
-@@ -3042,6 +3048,12 @@ def create(vm_):
+@@ -3039,6 +3045,12 @@ def create(vm_):
)
config_spec.deviceChange = specs["device_specs"]
@@ -55,9 +55,9 @@
+ config_spec.memoryHotAddEnabled = bool(mem_hot_add)
+
if extra_config:
- for key, value in six.iteritems(extra_config):
+ for key, value in extra_config.items():
option = vim.option.OptionValue(key=key, value=value)
--
-2.29.2
+2.33.0
++++++ implementation-of-held-unheld-functions-for-state-pk.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.944466199 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.948466203 +0200
@@ -1,4 +1,4 @@
-From 2ee360753c8fa937d9c81bf7da24f457041650bc Mon Sep 17 00:00:00 2001
+From f6e5a6bd16fa49cceadde9a9f46fefd12d92316b Mon Sep 17 00:00:00 2001
From: Victor Zhestkov <35733135+vzhestkov(a)users.noreply.github.com>
Date: Mon, 5 Jul 2021 18:39:26 +0300
Subject: [PATCH] Implementation of held/unheld functions for state pkg
@@ -6,19 +6,17 @@
* Implementation of held/unheld functions for state pkg
---
- salt/modules/zypperpkg.py | 201 +++++++++---
+ salt/modules/zypperpkg.py | 117 ++++++-
salt/states/pkg.py | 310 +++++++++++++++++++
- tests/pytests/unit/modules/test_zypperpkg.py | 142 +++++++++
- tests/pytests/unit/states/test_pkg.py | 155 ++++++++++
- 4 files changed, 760 insertions(+), 48 deletions(-)
- create mode 100644 tests/pytests/unit/modules/test_zypperpkg.py
- create mode 100644 tests/pytests/unit/states/test_pkg.py
+ tests/pytests/unit/modules/test_zypperpkg.py | 133 ++++++++
+ tests/pytests/unit/states/test_pkg.py | 137 ++++++++
+ 4 files changed, 684 insertions(+), 13 deletions(-)
diff --git a/salt/modules/zypperpkg.py b/salt/modules/zypperpkg.py
-index e064e2cb4e..932b30bac5 100644
+index 863be3c894..9c7ffcf5da 100644
--- a/salt/modules/zypperpkg.py
+++ b/salt/modules/zypperpkg.py
-@@ -2071,6 +2071,76 @@ def purge(
+@@ -2092,6 +2092,76 @@ def purge(
return _uninstall(inclusion_detection, name=name, pkgs=pkgs, root=root)
@@ -95,72 +93,48 @@
def list_locks(root=None):
"""
List current package locks.
-@@ -2141,43 +2211,68 @@ def clean_locks(root=None):
+@@ -2162,7 +2232,7 @@ def clean_locks(root=None):
return out
-def unhold(name=None, pkgs=None, **kwargs):
+def unhold(name=None, pkgs=None, root=None, **kwargs):
"""
-- Remove specified package lock.
-+ Remove a package hold.
-+
-+ name
-+ A package name to unhold, or a comma-separated list of package names to
-+ unhold.
-+
-+ pkgs
-+ A list of packages to unhold. The ``name`` parameter will be ignored if
-+ this option is passed.
+ .. versionadded:: 3003
+
+@@ -2176,6 +2246,8 @@ def unhold(name=None, pkgs=None, **kwargs):
+ A list of packages to unhold. The ``name`` parameter will be ignored if
+ this option is passed.
- root
-- operate on a different root directory.
++ root
+ Operate on a different root directory.
CLI Example:
- .. code-block:: bash
+@@ -2191,24 +2263,38 @@ def unhold(name=None, pkgs=None, **kwargs):
-- salt '*' pkg.remove_lock <package name>
-- salt '*' pkg.remove_lock <package1>,<package2>,<package3>
-- salt '*' pkg.remove_lock pkgs='["foo", "bar"]'
-+ salt '*' pkg.unhold <package name>
-+ salt '*' pkg.unhold <package1>,<package2>,<package3>
-+ salt '*' pkg.unhold pkgs='["foo", "bar"]'
- """
- ret = {}
-- root = kwargs.get("root")
-- if (not name and not pkgs) or (name and pkgs):
-+ if not name and not pkgs:
- raise CommandExecutionError("Name or packages must be specified.")
-- elif name:
-- pkgs = [name]
-
-- locks = list_locks(root)
-- try:
-- pkgs = list(__salt__["pkg_resource.parse_targets"](pkgs)[0].keys())
-- except MinionError as exc:
-- raise CommandExecutionError(exc)
-+ targets = []
-+ if pkgs:
+ targets = []
+ if pkgs:
+- for pkg in salt.utils.data.repack_dictlist(pkgs):
+- targets.append(pkg)
+ targets.extend(pkgs)
-+ else:
-+ targets.append(name)
+ else:
+ targets.append(name)
-+ locks = list_locks()
+ locks = list_locks()
removed = []
- missing = []
-- for pkg in pkgs:
-- if locks.get(pkg):
-- removed.append(pkg)
-- ret[pkg]["comment"] = "Package {} is no longer held.".format(pkg)
-+
-+ for target in targets:
+
+ for target in targets:
+ version = None
+ if isinstance(target, dict):
+ (target, version) = next(iter(target.items()))
-+ ret[target] = {"name": target, "changes": {}, "result": True, "comment": ""}
-+ if locks.get(target):
+ ret[target] = {"name": target, "changes": {}, "result": True, "comment": ""}
+ if locks.get(target):
+- removed.append(target)
+- ret[target]["changes"]["new"] = ""
+- ret[target]["changes"]["old"] = "hold"
+- ret[target]["comment"] = "Package {} is no longer held.".format(target)
+ lock_ver = None
+ if "version" in locks.get(target):
+ lock_ver = locks.get(target)["version"]
@@ -180,104 +154,61 @@
+ ret[target]["changes"]["old"] = "hold"
+ ret[target]["comment"] = "Package {} is no longer held.".format(target)
else:
-- missing.append(pkg)
-- ret[pkg]["comment"] = "Package {} unable to be unheld.".format(pkg)
-+ ret[target]["comment"] = "Package {} was already unheld.".format(target)
+- missing.append(target)
+ ret[target]["comment"] = "Package {} was already unheld.".format(target)
if removed:
- __zypper__(root=root).call("rl", *removed)
-@@ -2223,47 +2318,57 @@ def remove_lock(packages, root=None, **kwargs): # pylint: disable=unused-argume
+@@ -2261,7 +2347,7 @@ def remove_lock(name, root=None, **kwargs):
return {"removed": len(removed), "not_found": missing}
-def hold(name=None, pkgs=None, **kwargs):
+def hold(name=None, pkgs=None, root=None, **kwargs):
"""
-- Add a package lock. Specify packages to lock by exact name.
-+ Add a package hold. Specify one of ``name`` and ``pkgs``.
-+
-+ name
-+ A package name to hold, or a comma-separated list of package names to
-+ hold.
-+
-+ pkgs
-+ A list of packages to hold. The ``name`` parameter will be ignored if
-+ this option is passed.
+ .. versionadded:: 3003
+
+@@ -2275,6 +2361,9 @@ def hold(name=None, pkgs=None, **kwargs):
+ A list of packages to hold. The ``name`` parameter will be ignored if
+ this option is passed.
- root
-- operate on a different root directory.
++ root
+ Operate on a different root directory.
+
CLI Example:
- .. code-block:: bash
+@@ -2290,8 +2379,7 @@ def hold(name=None, pkgs=None, **kwargs):
-- salt '*' pkg.add_lock <package name>
-- salt '*' pkg.add_lock <package1>,<package2>,<package3>
-- salt '*' pkg.add_lock pkgs='["foo", "bar"]'
--
-- :param name:
-- :param pkgs:
-- :param kwargs:
-- :return:
-+ salt '*' pkg.hold <package name>
-+ salt '*' pkg.hold <package1>,<package2>,<package3>
-+ salt '*' pkg.hold pkgs='["foo", "bar"]'
- """
- ret = {}
-- root = kwargs.get("root")
-- if (not name and not pkgs) or (name and pkgs):
-+ if not name and not pkgs:
- raise CommandExecutionError("Name or packages must be specified.")
-- elif name:
-- pkgs = [name]
-
-- locks = list_locks(root=root)
-+ targets = []
-+ if pkgs:
+ targets = []
+ if pkgs:
+- for pkg in salt.utils.data.repack_dictlist(pkgs):
+- targets.append(pkg)
+ targets.extend(pkgs)
-+ else:
-+ targets.append(name)
-+
-+ locks = list_locks()
+ else:
+ targets.append(name)
+
+@@ -2299,9 +2387,12 @@ def hold(name=None, pkgs=None, **kwargs):
added = []
-- try:
-- pkgs = list(__salt__["pkg_resource.parse_targets"](pkgs)[0].keys())
-- except MinionError as exc:
-- raise CommandExecutionError(exc)
-
-- for pkg in pkgs:
-- ret[pkg] = {"name": pkg, "changes": {}, "result": False, "comment": ""}
-- if not locks.get(pkg):
-- added.append(pkg)
-- ret[pkg]["comment"] = "Package {} is now being held.".format(pkg)
-+ for target in targets:
+
+ for target in targets:
+ version = None
+ if isinstance(target, dict):
+ (target, version) = next(iter(target.items()))
-+ ret[target] = {"name": target, "changes": {}, "result": True, "comment": ""}
-+ if not locks.get(target):
+ ret[target] = {"name": target, "changes": {}, "result": True, "comment": ""}
+ if not locks.get(target):
+- added.append(target)
+ added.append(target if not version else "{}={}".format(target, version))
-+ ret[target]["changes"]["new"] = "hold"
-+ ret[target]["changes"]["old"] = ""
-+ ret[target]["comment"] = "Package {} is now being held.".format(target)
- else:
-- ret[pkg]["comment"] = "Package {} is already set to be held.".format(pkg)
-+ ret[target]["comment"] = "Package {} is already set to be held.".format(
-+ target
-+ )
-
- if added:
- __zypper__(root=root).call("al", *added)
+ ret[target]["changes"]["new"] = "hold"
+ ret[target]["changes"]["old"] = ""
+ ret[target]["comment"] = "Package {} is now being held.".format(target)
diff --git a/salt/states/pkg.py b/salt/states/pkg.py
-index f7327a33e3..0ef3f056c5 100644
+index fd6808a2dc..a8ffe25a77 100644
--- a/salt/states/pkg.py
+++ b/salt/states/pkg.py
-@@ -3550,3 +3550,313 @@ def mod_watch(name, **kwargs):
- "comment": "pkg.{} does not work with the watch requisite".format(sfun),
- "result": False,
- }
+@@ -3607,3 +3607,313 @@ def mod_beacon(name, **kwargs):
+ ),
+ "result": False,
+ }
+
+
+def held(name, version=None, pkgs=None, replace=False, **kwargs):
@@ -589,20 +520,13 @@
+
+ return ret
diff --git a/tests/pytests/unit/modules/test_zypperpkg.py b/tests/pytests/unit/modules/test_zypperpkg.py
-new file mode 100644
-index 0000000000..464fae1f47
---- /dev/null
+index 37bbef87b7..dbe09976b2 100644
+--- a/tests/pytests/unit/modules/test_zypperpkg.py
+++ b/tests/pytests/unit/modules/test_zypperpkg.py
-@@ -0,0 +1,142 @@
-+import pytest
-+import salt.modules.pkg_resource as pkg_resource
-+import salt.modules.zypperpkg as zypper
-+from tests.support.mock import MagicMock, patch
-+
-+
-+(a)pytest.fixture
-+def configure_loader_modules():
-+ return {zypper: {"rpm": None}, pkg_resource: {}}
+@@ -119,3 +119,136 @@ def test_del_repo_key():
+ with patch.dict(zypper.__salt__, salt_mock):
+ assert zypper.del_repo_key(keyid="keyid", root="/mnt")
+ salt_mock["lowpkg.remove_gpg_key"].assert_called_once_with("keyid", "/mnt")
+
+
+def test_pkg_hold():
@@ -737,29 +661,13 @@
+ assert len(ret) == 1
+ assert "bar-2:2.3.4-2.1.*" in ret
diff --git a/tests/pytests/unit/states/test_pkg.py b/tests/pytests/unit/states/test_pkg.py
-new file mode 100644
-index 0000000000..faf42c4681
---- /dev/null
+index 8e5ae42ed8..a2e63d5157 100644
+--- a/tests/pytests/unit/states/test_pkg.py
+++ b/tests/pytests/unit/states/test_pkg.py
-@@ -0,0 +1,155 @@
-+import pytest
-+import salt.states.pkg as pkg
-+from tests.support.mock import MagicMock, patch
-+
-+
-+(a)pytest.fixture
-+def configure_loader_modules():
-+ return {
-+ pkg: {
-+ "__env__": "base",
-+ "__salt__": {},
-+ "__grains__": {"os": "CentOS"},
-+ "__opts__": {"test": False, "cachedir": ""},
-+ "__instance_id__": "",
-+ "__low__": {},
-+ "__utils__": {},
-+ },
-+ }
+@@ -352,3 +352,140 @@ def test_mod_beacon():
+ }
+
+ assert ret == expected
+
+
+(a)pytest.mark.parametrize(
@@ -898,6 +806,6 @@
+ unhold_mock.assert_any_call(name="held-test", pkgs=["baz"])
+ unhold_mock.assert_any_call(name="held-test", pkgs=["bar"])
--
-2.32.0
+2.33.0
++++++ implementation-of-suse_ip-execution-module-bsc-10999.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.956466212 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.956466212 +0200
@@ -1,4 +1,4 @@
-From fc15e6791deaac9b5ac52268b218e202481440a4 Mon Sep 17 00:00:00 2001
+From ebf90aaad969a61708673a9681d0d534134e16f8 Mon Sep 17 00:00:00 2001
From: Victor Zhestkov <35733135+vzhestkov(a)users.noreply.github.com>
Date: Thu, 18 Feb 2021 15:56:01 +0300
Subject: [PATCH] Implementation of suse_ip execution module
@@ -8,12 +8,12 @@
salt/modules/linux_ip.py | 2 +
salt/modules/rh_ip.py | 2 +-
salt/modules/suse_ip.py | 1151 ++++++++++++++++++++++++++
- salt/states/network.py | 35 +-
+ salt/states/network.py | 28 +-
salt/templates/suse_ip/ifcfg.jinja | 34 +
salt/templates/suse_ip/ifroute.jinja | 8 +
salt/templates/suse_ip/network.jinja | 30 +
setup.py | 1 +
- 8 files changed, 1248 insertions(+), 15 deletions(-)
+ 8 files changed, 1248 insertions(+), 8 deletions(-)
create mode 100644 salt/modules/suse_ip.py
create mode 100644 salt/templates/suse_ip/ifcfg.jinja
create mode 100644 salt/templates/suse_ip/ifroute.jinja
@@ -33,10 +33,10 @@
return (False, "Module linux_ip: RedHat systems are not supported.")
if __grains__["os_family"] == "Debian":
diff --git a/salt/modules/rh_ip.py b/salt/modules/rh_ip.py
-index 2da954bdd0..fa13cc85d1 100644
+index d3bab3a1f8..790241a82e 100644
--- a/salt/modules/rh_ip.py
+++ b/salt/modules/rh_ip.py
-@@ -543,7 +543,7 @@ def _parse_settings_eth(opts, iface_type, enabled, iface):
+@@ -551,7 +551,7 @@ def _parse_settings_eth(opts, iface_type, enabled, iface):
"""
result = {"name": iface}
if "proto" in opts:
@@ -1203,7 +1203,7 @@
+
+ return _read_file(_SUSE_NETWORK_FILE)
diff --git a/salt/states/network.py b/salt/states/network.py
-index 30bd07810e..04d6a71f34 100644
+index f20863113b..49d7857f1d 100644
--- a/salt/states/network.py
+++ b/salt/states/network.py
@@ -504,6 +504,8 @@ def managed(name, enabled=True, **kwargs):
@@ -1215,9 +1215,9 @@
# Build interface
try:
old = __salt__["ip.get_interface"](name)
-@@ -649,25 +651,30 @@ def managed(name, enabled=True, **kwargs):
+@@ -649,17 +651,29 @@ def managed(name, enabled=True, **kwargs):
present_slaves = __salt__["cmd.run"](
- ["cat", "/sys/class/net/{0}/bonding/slaves".format(name)]
+ ["cat", "/sys/class/net/{}/bonding/slaves".format(name)]
).split()
- desired_slaves = kwargs["slaves"].split()
+ if isinstance(kwargs['slaves'], list):
@@ -1250,16 +1250,8 @@
+ ret["changes"]["enslave"] = "Added slaves '{0}' to master '{1}'".format(
+ " ".join(missing_slaves), name
)
-- cmd = [ifenslave_path, name] + list(missing_slaves)
-- __salt__["cmd.run"](cmd, python_shell=False)
-- else:
-- log.error("Command 'ifenslave' not found")
-- ret["changes"]["enslave"] = "Added slaves '{0}' to master '{1}'".format(
-- " ".join(missing_slaves), name
-- )
- else:
- log.info(
- "All slaves '%s' are already added to the master %s"
+ cmd = [ifenslave_path, name] + list(missing_slaves)
+ __salt__["cmd.run"](cmd, python_shell=False)
diff --git a/salt/templates/suse_ip/ifcfg.jinja b/salt/templates/suse_ip/ifcfg.jinja
new file mode 100644
index 0000000000..8384d0eab7
@@ -1351,10 +1343,10 @@
+{%endif%}{% if wireless_regulatory_domain %}WIRELESS_REGULATORY_DOMAIN="{{wireless_regulatory_domain}}"
+{%endif%}
diff --git a/setup.py b/setup.py
-index d9c3d6e303..c6bd4a3c03 100755
+index e13e5485ed..866e8d91f9 100755
--- a/setup.py
+++ b/setup.py
-@@ -1108,6 +1108,7 @@ class SaltDistribution(distutils.dist.Distribution):
+@@ -1106,6 +1106,7 @@ class SaltDistribution(distutils.dist.Distribution):
package_data = {
"salt.templates": [
"rh_ip/*.jinja",
@@ -1363,6 +1355,6 @@
"virt/*.jinja",
"git/*",
--
-2.30.0
+2.33.0
++++++ improvements-on-ansiblegate-module-354.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.964466222 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.964466222 +0200
@@ -1,4 +1,4 @@
-From aa0f845e2bbc37332db04c583f475cfe25304db6 Mon Sep 17 00:00:00 2001
+From 90cc5349ed085729db43966bf290c76db5c7f6b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
<psuarezhernandez(a)suse.com>
Date: Tue, 20 Apr 2021 11:01:26 +0100
@@ -33,26 +33,29 @@
* Fix pylint issue
* Fix issue in documentation
+
+Fix issue parsing errors in ansiblegate state module
---
salt/modules/ansiblegate.py | 166 +++++++++++++++++-
salt/roster/ansible.py | 18 +-
+ salt/states/ansiblegate.py | 12 +-
salt/utils/ansible.py | 44 +++++
.../pytests/unit/modules/test_ansiblegate.py | 94 +++++++++-
.../example_playbooks/example-playbook2/hosts | 7 +
.../example-playbook2/site.yml | 28 +++
.../playbooks/example_playbooks/playbook1.yml | 5 +
tests/unit/roster/test_ansible.py | 2 +-
- 8 files changed, 354 insertions(+), 10 deletions(-)
+ 9 files changed, 364 insertions(+), 12 deletions(-)
create mode 100644 salt/utils/ansible.py
create mode 100644 tests/unit/files/playbooks/example_playbooks/example-playbook2/hosts
create mode 100644 tests/unit/files/playbooks/example_playbooks/example-playbook2/site.yml
create mode 100644 tests/unit/files/playbooks/example_playbooks/playbook1.yml
diff --git a/salt/modules/ansiblegate.py b/salt/modules/ansiblegate.py
-index 5d4b986ec2..4f96607a07 100644
+index 0279a26017..2b4d4b0bdf 100644
--- a/salt/modules/ansiblegate.py
+++ b/salt/modules/ansiblegate.py
-@@ -426,7 +426,171 @@ def playbooks(
+@@ -425,7 +425,171 @@ def playbooks(
}
ret = __salt__["cmd.run_all"](**cmd_kwargs)
log.debug("Ansible Playbook Return: %s", ret)
@@ -276,6 +279,36 @@
hosts.extend(_get_hosts_from_group(child))
return hosts
+diff --git a/salt/states/ansiblegate.py b/salt/states/ansiblegate.py
+index 5daba0f37f..bd00653928 100644
+--- a/salt/states/ansiblegate.py
++++ b/salt/states/ansiblegate.py
+@@ -183,7 +183,11 @@ def playbooks(name, rundir=None, git_repo=None, git_kwargs=None, ansible_kwargs=
+ checks = __salt__["ansible.playbooks"](
+ name, rundir=rundir, check=True, diff=True, **ansible_kwargs
+ )
+- if all(
++ if "stats" not in checks:
++ ret["comment"] = checks.get("stderr", checks)
++ ret["result"] = False
++ ret["changes"] = {}
++ elif all(
+ not check["changed"]
+ and not check["failures"]
+ and not check["unreachable"]
+@@ -212,7 +216,11 @@ def playbooks(name, rundir=None, git_repo=None, git_kwargs=None, ansible_kwargs=
+ results = __salt__["ansible.playbooks"](
+ name, rundir=rundir, diff=True, **ansible_kwargs
+ )
+- if all(
++ if "stats" not in results:
++ ret["comment"] = results.get("stderr", results)
++ ret["result"] = False
++ ret["changes"] = {}
++ elif all(
+ not check["changed"]
+ and not check["failures"]
+ and not check["unreachable"]
diff --git a/salt/utils/ansible.py b/salt/utils/ansible.py
new file mode 100644
index 0000000000..ee85cb656c
@@ -516,6 +549,6 @@
return {ansible: {"__utils__": utils, "__opts__": {}, "__runner__": runner}}
--
-2.31.1
+2.33.0
++++++ include-aliases-in-the-fqdns-grains.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.972466231 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.972466231 +0200
@@ -1,4 +1,4 @@
-From 3c956a1cf1de17c5c49f0856051cabe2ffb4d0f2 Mon Sep 17 00:00:00 2001
+From 0c0f470f0bc082316cf854c8c4f6f6500f80f3f0 Mon Sep 17 00:00:00 2001
From: Bo Maryniuk <bo(a)suse.de>
Date: Tue, 29 Jan 2019 11:11:38 +0100
Subject: [PATCH] Include aliases in the fqdns grains
@@ -14,114 +14,43 @@
Add UT for fqdns aliases
Leverage cached interfaces, if any.
+
+Implement network.fqdns module function (bsc#1134860) (#172)
+
+* Duplicate fqdns logic in module.network
+* Move _get_interfaces to utils.network
+* Reuse network.fqdns in grains.core.fqdns
+* Return empty list when fqdns grains is disabled
+
+Co-authored-by: Eric Siebigteroth <eric.siebigteroth(a)suse.de>
---
- salt/grains/core.py | 69 +++++++++++++++++++++-----------
- salt/utils/network.py | 16 ++++++++
- tests/unit/grains/test_core.py | 45 ++++++++++++++++++---
- tests/unit/utils/test_network.py | 37 +++++++++++++++++
- 4 files changed, 138 insertions(+), 29 deletions(-)
-
-diff --git a/salt/grains/core.py b/salt/grains/core.py
-index bc3cf129cd..006878f806 100644
---- a/salt/grains/core.py
-+++ b/salt/grains/core.py
-@@ -1733,29 +1733,31 @@ def _parse_cpe_name(cpe):
-
-
- def _parse_cpe_name(cpe):
-- '''
-+ """
- Parse CPE_NAME data from the os-release
-
- Info: https://csrc.nist.gov/projects/security-content-automation-protocol/scap-sp…
-
- :param cpe:
- :return:
-- '''
-+ """
- part = {
-- 'o': 'operating system',
-- 'h': 'hardware',
-- 'a': 'application',
-+ "o": "operating system",
-+ "h": "hardware",
-+ "a": "application",
- }
- ret = {}
-- cpe = (cpe or '').split(':')
-- if len(cpe) > 4 and cpe[0] == 'cpe':
-- if cpe[1].startswith('/'): # WFN to URI
-- ret['vendor'], ret['product'], ret['version'] = cpe[2:5]
-- ret['phase'] = cpe[5] if len(cpe) > 5 else None
-- ret['part'] = part.get(cpe[1][1:])
-- elif len(cpe) == 13 and cpe[1] == '2.3': # WFN to a string
-- ret['vendor'], ret['product'], ret['version'], ret['phase'] = [x if x != '*' else None for x in cpe[3:7]]
-- ret['part'] = part.get(cpe[2])
-+ cpe = (cpe or "").split(":")
-+ if len(cpe) > 4 and cpe[0] == "cpe":
-+ if cpe[1].startswith("/"): # WFN to URI
-+ ret["vendor"], ret["product"], ret["version"] = cpe[2:5]
-+ ret["phase"] = cpe[5] if len(cpe) > 5 else None
-+ ret["part"] = part.get(cpe[1][1:])
-+ elif len(cpe) == 13 and cpe[1] == "2.3": # WFN to a string
-+ ret["vendor"], ret["product"], ret["version"], ret["phase"] = [
-+ x if x != "*" else None for x in cpe[3:7]
-+ ]
-+ ret["part"] = part.get(cpe[2])
-
- return ret
-
-@@ -2396,15 +2398,36 @@ def fqdns():
- """
- # Provides:
- # fqdns
-- opt = {"fqdns": []}
-- if __opts__.get(
-- "enable_fqdns_grains",
-- False
-- if salt.utils.platform.is_windows() or salt.utils.platform.is_proxy()
-- else True,
-- ):
-- opt = __salt__["network.fqdns"]()
-- return opt
-+
-+ grains = {}
-+ fqdns = set()
-+
-+ addresses = salt.utils.network.ip_addrs(
-+ include_loopback=False, interface_data=_get_interfaces()
-+ )
-+ addresses.extend(
-+ salt.utils.network.ip_addrs6(
-+ include_loopback=False, interface_data=_get_interfaces()
-+ )
-+ )
-+ err_message = "Exception during resolving address: %s"
-+ for ip in addresses:
-+ try:
+ salt/modules/network.py | 5 ++-
+ salt/utils/network.py | 16 +++++++++
+ tests/unit/grains/test_core.py | 60 +++++++++++++++++++++-----------
+ tests/unit/utils/test_network.py | 37 ++++++++++++++++++++
+ 4 files changed, 97 insertions(+), 21 deletions(-)
+
+diff --git a/salt/modules/network.py b/salt/modules/network.py
+index 9280a0f854..d8ff251271 100644
+--- a/salt/modules/network.py
++++ b/salt/modules/network.py
+@@ -2073,7 +2073,10 @@ def fqdns():
+
+ def _lookup_fqdn(ip):
+ try:
+- return [socket.getfqdn(socket.gethostbyaddr(ip)[0])]
+ name, aliaslist, addresslist = socket.gethostbyaddr(ip)
-+ fqdns.update(
-+ [socket.getfqdn(name)]
-+ + [als for als in aliaslist if salt.utils.network.is_fqdn(als)]
-+ )
-+ except socket.herror as err:
-+ if err.errno in (0, HOST_NOT_FOUND, NO_DATA):
-+ # No FQDN for this IP address, so we don't need to know this all the time.
-+ log.debug("Unable to resolve address %s: %s", ip, err)
-+ else:
-+ log.error(err_message, ip, err)
-+ except (OSError, socket.gaierror, socket.timeout) as err:
-+ log.error(err_message, ip, err)
-+
-+ return {"fqdns": sorted(list(fqdns))}
-
-
- def ip_fqdn():
++ return [socket.getfqdn(name)] + [
++ als for als in aliaslist if salt.utils.network.is_fqdn(als)
++ ]
+ except socket.herror as err:
+ if err.errno in (0, HOST_NOT_FOUND, NO_DATA):
+ # No FQDN for this IP address, so we don't need to know this all the time.
diff --git a/salt/utils/network.py b/salt/utils/network.py
-index b3e8db3886..dd7fceb91a 100644
+index 144f9dc850..5fc9a34ca4 100644
--- a/salt/utils/network.py
+++ b/salt/utils/network.py
-@@ -2208,3 +2208,19 @@ def filter_by_networks(values, networks):
+@@ -2286,3 +2286,19 @@ def filter_by_networks(values, networks):
raise ValueError("Do not know how to filter a {}".format(type(values)))
else:
return values
@@ -142,28 +71,69 @@
+ and all(compliant.match(x) for x in hostname.rstrip(".").split("."))
+ )
diff --git a/tests/unit/grains/test_core.py b/tests/unit/grains/test_core.py
-index 7dbf34deac..d760e57a54 100644
+index 914be531ed..7173f04979 100644
--- a/tests/unit/grains/test_core.py
+++ b/tests/unit/grains/test_core.py
-@@ -1367,12 +1367,11 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
- ("bluesniff.foo.bar", [], ["fe80::a8b2:93ff:dead:beef"]),
- ]
- ret = {"fqdns": ["bluesniff.foo.bar", "foo.bar.baz", "rinzler.evil-corp.com"]}
-- with patch.dict(core.__salt__, {"network.fqdns": salt.modules.network.fqdns}):
-- with patch.object(socket, "gethostbyaddr", side_effect=reverse_resolv_mock):
-- fqdns = core.fqdns()
-- assert "fqdns" in fqdns
-- assert len(fqdns["fqdns"]) == len(ret["fqdns"])
-- assert set(fqdns["fqdns"]) == set(ret["fqdns"])
-+ with patch.object(socket, "gethostbyaddr", side_effect=reverse_resolv_mock):
-+ fqdns = core.fqdns()
-+ assert "fqdns" in fqdns
-+ assert len(fqdns["fqdns"]) == len(ret["fqdns"])
-+ assert set(fqdns["fqdns"]) == set(ret["fqdns"])
-
- @skipIf(not salt.utils.platform.is_linux(), "System is not Linux")
- @patch("salt.utils.network.ip_addrs", MagicMock(return_value=["1.2.3.4"]))
-@@ -1413,6 +1412,40 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
+@@ -18,6 +18,7 @@ import salt.utils.network
+ import salt.utils.path
+ import salt.utils.platform
+ from salt._compat import ipaddress
++from salt.ext import six
+ from tests.support.mixins import LoaderModuleMockMixin
+ from tests.support.mock import MagicMock, Mock, mock_open, patch
+ from tests.support.unit import TestCase, skipIf
+@@ -1428,7 +1429,7 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
+ with patch.dict("salt.grains.core.__opts__", {"enable_fqdns_grains": False}):
+ assert core.fqdns() == {"fqdns": []}
+
+- def test_enable_fqdns_true(self):
++ def test_enablefqdnsTrue(self):
+ """
+ testing that grains uses network.fqdns module
+ """
+@@ -1439,14 +1440,14 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
+ with patch.dict("salt.grains.core.__opts__", {"enable_fqdns_grains": True}):
+ assert core.fqdns() == "my.fake.domain"
+
+- def test_enable_fqdns_none(self):
++ def test_enablefqdnsNone(self):
+ """
+ testing default fqdns grains is returned when enable_fqdns_grains is None
+ """
+ with patch.dict("salt.grains.core.__opts__", {"enable_fqdns_grains": None}):
+ assert core.fqdns() == {"fqdns": []}
+
+- def test_enable_fqdns_without_patching(self):
++ def test_enablefqdnswithoutpaching(self):
+ """
+ testing fqdns grains is enabled by default
+ """
+@@ -1454,23 +1455,7 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
+ "salt.grains.core.__salt__",
+ {"network.fqdns": MagicMock(return_value="my.fake.domain")},
+ ):
+- # fqdns is disabled by default on Windows
+- if salt.utils.platform.is_windows():
+- assert core.fqdns() == {"fqdns": []}
+- else:
+- assert core.fqdns() == "my.fake.domain"
+-
+- def test_enable_fqdns_false_is_proxy(self):
+- """
+- testing fqdns grains is disabled by default for proxy minions
+- """
+- with patch("salt.utils.platform.is_proxy", return_value=True, autospec=True):
+- with patch.dict(
+- "salt.grains.core.__salt__",
+- {"network.fqdns": MagicMock(return_value="my.fake.domain")},
+- ):
+- # fqdns is disabled by default on proxy minions
+- assert core.fqdns() == {"fqdns": []}
++ assert core.fqdns() == "my.fake.domain"
+
+ def test_enable_fqdns_false_is_aix(self):
+ """
+@@ -1577,6 +1562,41 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
mock_log.debug.assert_called_once()
mock_log.error.assert_called()
@@ -192,23 +162,24 @@
+ ["fe80::a8b2:93ff:dead:beef"],
+ ),
+ ]
-+ with patch.object(socket, "gethostbyaddr", side_effect=reverse_resolv_mock):
-+ fqdns = core.fqdns()
-+ assert "fqdns" in fqdns
-+ for alias in ["this.is.valid.alias", "alias.bluesniff.foo.bar"]:
-+ assert alias in fqdns["fqdns"]
++ with patch.dict(core.__salt__, {"network.fqdns": salt.modules.network.fqdns}):
++ with patch.object(socket, "gethostbyaddr", side_effect=reverse_resolv_mock):
++ fqdns = core.fqdns()
++ assert "fqdns" in fqdns
++ for alias in ["this.is.valid.alias", "alias.bluesniff.foo.bar"]:
++ assert alias in fqdns["fqdns"]
+
-+ for alias in ["throwmeaway", "false-hostname", "badaliass"]:
-+ assert alias not in fqdns["fqdns"]
++ for alias in ["throwmeaway", "false-hostname", "badaliass"]:
++ assert alias not in fqdns["fqdns"]
+
def test_core_virtual(self):
"""
test virtual grain with cmd virt-what
diff --git a/tests/unit/utils/test_network.py b/tests/unit/utils/test_network.py
-index 779fc0fc34..9a37a94d8f 100644
+index 6863ccd0c9..637d5e9811 100644
--- a/tests/unit/utils/test_network.py
+++ b/tests/unit/utils/test_network.py
-@@ -1274,3 +1274,40 @@ class NetworkTestCase(TestCase):
+@@ -1273,3 +1273,40 @@ class NetworkTestCase(TestCase):
),
):
self.assertEqual(network.get_fqhostname(), host)
@@ -250,6 +221,6 @@
+ ]:
+ assert not network.is_fqdn(fqdn)
--
-2.29.2
+2.33.0
++++++ make-aptpkg.list_repos-compatible-on-enabled-disable.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.984466245 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.984466245 +0200
@@ -1,18 +1,18 @@
-From 7d507f8f5879a1de3e707fdb5cadd618a150123f Mon Sep 17 00:00:00 2001
+From f31ab712a0838709bee0ba2420c99caa6700fbf4 Mon Sep 17 00:00:00 2001
From: Bo Maryniuk <bo(a)suse.de>
Date: Fri, 16 Nov 2018 10:54:12 +0100
Subject: [PATCH] Make aptpkg.list_repos compatible on enabled/disabled
output
---
- salt/modules/aptpkg.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
+ salt/modules/aptpkg.py | 3 +++
+ 1 file changed, 3 insertions(+)
diff --git a/salt/modules/aptpkg.py b/salt/modules/aptpkg.py
-index 1e2866b47b..70e173806a 100644
+index 0a1c3b347c..1b4e311cee 100644
--- a/salt/modules/aptpkg.py
+++ b/salt/modules/aptpkg.py
-@@ -1681,10 +1681,13 @@ def list_repos(**kwargs):
+@@ -1691,6 +1691,9 @@ def list_repos(**kwargs):
repo["file"] = source.file
repo["comps"] = getattr(source, "comps", [])
repo["disabled"] = source.disabled
@@ -21,14 +21,8 @@
+ ] # This is for compatibility with the other modules
repo["dist"] = source.dist
repo["type"] = source.type
-- repo["uri"] = source.uri
-- repo["line"] = source.line.strip()
-+ repo["uri"] = source.uri.rstrip("/")
-+ repo["line"] = salt.utils.pkg.deb.strip_uri(source.line.strip())
- repo["architectures"] = getattr(source, "architectures", [])
- repos.setdefault(source.uri, []).append(repo)
- return repos
+ repo["uri"] = source.uri
--
-2.29.2
+2.33.0
++++++ parsing-epoch-out-of-version-provided-during-pkg-rem.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:20.996466258 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:20.996466258 +0200
@@ -1,8 +1,8 @@
-From d1a8a0d724ee272953bb4615869d9fe468d28e98 Mon Sep 17 00:00:00 2001
+From 3973f51a948c0d4a81ca5992c9b06e71ebae443c Mon Sep 17 00:00:00 2001
From: Jochen Breuer <jbreuer(a)suse.de>
Date: Mon, 3 May 2021 17:20:54 +0200
-Subject: [PATCH] Parsing Epoch out of version provided during pkg
- remove (bsc#1173692)
+Subject: [PATCH] Parsing Epoch out of version provided during pkg remove
+ (bsc#1173692)
yum doesn't seem to like the epoch information provided within the
version. Therefore it's removed before passing it to yum.
@@ -16,10 +16,10 @@
* Epoch information is now skipped in all cases.
* Removes ignore_epoch from pkg state
---
- changelog/57881.changed | 1 +
- salt/modules/yumpkg.py | 14 +++--
- tests/unit/modules/test_yumpkg.py | 85 +++++++++++++++++++++++++++++++
- 3 files changed, 96 insertions(+), 4 deletions(-)
+ changelog/57881.changed | 1 +
+ salt/modules/yumpkg.py | 14 ++--
+ tests/pytests/unit/modules/test_yumpkg.py | 79 +++++++++++++++++++++++
+ 3 files changed, 90 insertions(+), 4 deletions(-)
create mode 100644 changelog/57881.changed
diff --git a/changelog/57881.changed b/changelog/57881.changed
@@ -30,10 +30,10 @@
@@ -0,0 +1 @@
+Parsing Epoch out of version during pkg remove, since yum can't handle that in all of the cases.
diff --git a/salt/modules/yumpkg.py b/salt/modules/yumpkg.py
-index 82adbbd59d..0fb41a0400 100644
+index c800dafa82..dd81c6f1e9 100644
--- a/salt/modules/yumpkg.py
+++ b/salt/modules/yumpkg.py
-@@ -2051,11 +2051,13 @@ def remove(name=None, pkgs=None, **kwargs): # pylint: disable=W0613
+@@ -2087,11 +2087,13 @@ def remove(name=None, pkgs=None, **kwargs): # pylint: disable=W0613
old = list_pkgs()
targets = []
for target in pkg_params:
@@ -50,7 +50,7 @@
arch = ""
pkgname = target
try:
-@@ -2066,7 +2068,11 @@ def remove(name=None, pkgs=None, **kwargs): # pylint: disable=W0613
+@@ -2102,7 +2104,11 @@ def remove(name=None, pkgs=None, **kwargs): # pylint: disable=W0613
if archpart in salt.utils.pkg.rpm.ARCHES:
arch = "." + archpart
pkgname = namepart
@@ -63,103 +63,97 @@
if not targets:
return {}
-diff --git a/tests/unit/modules/test_yumpkg.py b/tests/unit/modules/test_yumpkg.py
-index 96d3f12b17..e22c0b9251 100644
---- a/tests/unit/modules/test_yumpkg.py
-+++ b/tests/unit/modules/test_yumpkg.py
-@@ -1014,6 +1014,91 @@ class YumTestCase(TestCase, LoaderModuleMockMixin):
- redirect_stderr=True,
- )
+diff --git a/tests/pytests/unit/modules/test_yumpkg.py b/tests/pytests/unit/modules/test_yumpkg.py
+index cae47788ff..7e3ed517ea 100644
+--- a/tests/pytests/unit/modules/test_yumpkg.py
++++ b/tests/pytests/unit/modules/test_yumpkg.py
+@@ -1046,6 +1046,85 @@ def test_install_with_options():
+ )
-+ def test_remove_with_epoch(self):
-+ """
-+ Tests that we properly identify a version containing an epoch for
-+ deinstallation.
-+
-+ You can deinstall pkgs only without the epoch if no arch is provided:
-+
-+ .. code-block:: bash
-+
-+ yum remove PackageKit-yum-1.1.10-2.el7.centos
-+ """
-+ name = "foo"
-+ installed = "8:3.8.12-4.n.el7"
-+ list_pkgs_mock = MagicMock(
-+ side_effect=lambda **kwargs: {
-+ name: [installed]
-+ if kwargs.get("versions_as_list", False)
-+ else installed
-+ }
-+ )
-+ cmd_mock = MagicMock(
-+ return_value={"pid": 12345, "retcode": 0, "stdout": "", "stderr": ""}
-+ )
-+ salt_mock = {
-+ "cmd.run_all": cmd_mock,
-+ "lowpkg.version_cmp": rpm.version_cmp,
-+ "pkg_resource.parse_targets": MagicMock(
-+ return_value=({name: installed}, "repository")
-+ ),
+
++def test_remove_with_epoch():
++ """
++ Tests that we properly identify a version containing an epoch for
++ deinstallation.
++ You can deinstall pkgs only without the epoch if no arch is provided:
++ .. code-block:: bash
++ yum remove PackageKit-yum-1.1.10-2.el7.centos
++ """
++ name = "foo"
++ installed = "8:3.8.12-4.n.el7"
++ list_pkgs_mock = MagicMock(
++ side_effect=lambda **kwargs: {
++ name: [installed] if kwargs.get("versions_as_list", False) else installed
+ }
-+ full_pkg_string = "-".join((name, installed[2:]))
-+ with patch.object(yumpkg, "list_pkgs", list_pkgs_mock), patch(
-+ "salt.utils.systemd.has_scope", MagicMock(return_value=False)
-+ ), patch.dict(yumpkg.__salt__, salt_mock):
-+
-+ with patch.dict(yumpkg.__grains__, {"os": "CentOS", "osrelease": 7}):
-+ expected = ["yum", "-y", "remove", full_pkg_string]
-+ yumpkg.remove(name)
-+ call = cmd_mock.mock_calls[0][1][0]
-+ assert call == expected, call
-+
-+ def test_remove_with_epoch_and_arch_info(self):
-+ """
-+ Tests that we properly identify a version containing an epoch and arch
-+ deinstallation.
-+
-+ You can deinstall pkgs with or without epoch in combination with the arch.
-+ Here we test for the absence of the epoch, but the presence for the arch:
-+
-+ .. code-block:: bash
-+
-+ yum remove PackageKit-yum-1.1.10-2.el7.centos.x86_64
-+ """
-+ arch = "x86_64"
-+ name = "foo"
-+ name_and_arch = name + "." + arch
-+ installed = "8:3.8.12-4.n.el7"
-+ list_pkgs_mock = MagicMock(
-+ side_effect=lambda **kwargs: {
-+ name_and_arch: [installed]
-+ if kwargs.get("versions_as_list", False)
-+ else installed
-+ }
-+ )
-+ cmd_mock = MagicMock(
-+ return_value={"pid": 12345, "retcode": 0, "stdout": "", "stderr": ""}
-+ )
-+ salt_mock = {
-+ "cmd.run_all": cmd_mock,
-+ "lowpkg.version_cmp": rpm.version_cmp,
-+ "pkg_resource.parse_targets": MagicMock(
-+ return_value=({name_and_arch: installed}, "repository")
-+ ),
++ )
++ cmd_mock = MagicMock(
++ return_value={"pid": 12345, "retcode": 0, "stdout": "", "stderr": ""}
++ )
++ salt_mock = {
++ "cmd.run_all": cmd_mock,
++ "lowpkg.version_cmp": rpm.version_cmp,
++ "pkg_resource.parse_targets": MagicMock(
++ return_value=({name: installed}, "repository")
++ ),
++ }
++ full_pkg_string = "-".join((name, installed[2:]))
++ with patch.object(yumpkg, "list_pkgs", list_pkgs_mock), patch(
++ "salt.utils.systemd.has_scope", MagicMock(return_value=False)
++ ), patch.dict(yumpkg.__salt__, salt_mock):
++
++ with patch.dict(yumpkg.__grains__, {"os": "CentOS", "osrelease": 7}):
++ expected = ["yum", "-y", "remove", full_pkg_string]
++ yumpkg.remove(name)
++ call = cmd_mock.mock_calls[0][1][0]
++ assert call == expected, call
++
++
++def test_remove_with_epoch_and_arch_info():
++ """
++ Tests that we properly identify a version containing an epoch and arch
++ deinstallation.
++ You can deinstall pkgs with or without epoch in combination with the arch.
++ Here we test for the absence of the epoch, but the presence for the arch:
++ .. code-block:: bash
++ yum remove PackageKit-yum-1.1.10-2.el7.centos.x86_64
++ """
++ arch = "x86_64"
++ name = "foo"
++ name_and_arch = name + "." + arch
++ installed = "8:3.8.12-4.n.el7"
++ list_pkgs_mock = MagicMock(
++ side_effect=lambda **kwargs: {
++ name_and_arch: [installed]
++ if kwargs.get("versions_as_list", False)
++ else installed
+ }
-+ full_pkg_string = "-".join((name, installed[2:]))
-+ with patch.object(yumpkg, "list_pkgs", list_pkgs_mock), patch(
-+ "salt.utils.systemd.has_scope", MagicMock(return_value=False)
-+ ), patch.dict(yumpkg.__salt__, salt_mock):
-+
-+ with patch.dict(yumpkg.__grains__, {"os": "CentOS", "osrelease": 7}):
-+ expected = ["yum", "-y", "remove", full_pkg_string + "." + arch]
-+ yumpkg.remove(name)
-+ call = cmd_mock.mock_calls[0][1][0]
-+ assert call == expected, call
-+
- def test_install_with_epoch(self):
- """
- Tests that we properly identify a version containing an epoch as an
++ )
++ cmd_mock = MagicMock(
++ return_value={"pid": 12345, "retcode": 0, "stdout": "", "stderr": ""}
++ )
++ salt_mock = {
++ "cmd.run_all": cmd_mock,
++ "lowpkg.version_cmp": rpm.version_cmp,
++ "pkg_resource.parse_targets": MagicMock(
++ return_value=({name_and_arch: installed}, "repository")
++ ),
++ }
++ full_pkg_string = "-".join((name, installed[2:]))
++ with patch.object(yumpkg, "list_pkgs", list_pkgs_mock), patch(
++ "salt.utils.systemd.has_scope", MagicMock(return_value=False)
++ ), patch.dict(yumpkg.__salt__, salt_mock):
++
++ with patch.dict(yumpkg.__grains__, {"os": "CentOS", "osrelease": 7}):
++ expected = ["yum", "-y", "remove", full_pkg_string + "." + arch]
++ yumpkg.remove(name)
++ call = cmd_mock.mock_calls[0][1][0]
++ assert call == expected, call
++
++
+ def test_install_with_epoch():
+ """
+ Tests that we properly identify a version containing an epoch as an
--
-2.31.1
+2.33.0
++++++ prevent-logging-deadlock-on-salt-api-subprocesses-bs.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:21.008466272 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:21.008466272 +0200
@@ -1,4 +1,4 @@
-From 4e6cc0c401bd6c9e47b324fc2df99e3bd679da33 Mon Sep 17 00:00:00 2001
+From eb15f772aa7aa6c9553bb4f24c709e941e6f3413 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
<psuarezhernandez(a)suse.com>
Date: Wed, 22 Jan 2020 08:19:55 +0000
@@ -6,94 +6,29 @@
(bsc#1159284)
---
- salt/_logging/impl.py | 127 +++++++++++++++-------------------
- salt/client/ssh/__init__.py | 12 +++-
- salt/client/ssh/client.py | 21 +++---
- salt/client/ssh/wrapper/cp.py | 10 +--
- salt/loader.py | 2 +-
- salt/utils/lazy.py | 10 +--
- 6 files changed, 85 insertions(+), 97 deletions(-)
+ salt/_logging/impl.py | 80 +++++++++++++++++++----------------
+ salt/client/ssh/__init__.py | 12 +++++-
+ salt/client/ssh/client.py | 9 +++-
+ salt/client/ssh/wrapper/cp.py | 2 +-
+ salt/loader.py | 6 +--
+ salt/utils/lazy.py | 10 ++---
+ 6 files changed, 71 insertions(+), 48 deletions(-)
diff --git a/salt/_logging/impl.py b/salt/_logging/impl.py
-index 5a6292b445..2f15bf0025 100644
+index afb0027eeb..ad46c10e01 100644
--- a/salt/_logging/impl.py
+++ b/salt/_logging/impl.py
-@@ -1,4 +1,3 @@
--# -*- coding: utf-8 -*-
- """
- salt._logging.impl
- ~~~~~~~~~~~~~~~~~~
-@@ -6,15 +5,12 @@
- Salt's logging implementation classes/functionality
- """
-
--# Import python libs
--from __future__ import absolute_import, print_function, unicode_literals
-
- import logging
- import re
- import sys
- import types
-
--# Import 3rd-party libs
- import salt.ext.six as six
-
- # Let's define these custom logging levels before importing the salt._logging.mixins
-@@ -23,8 +19,8 @@ PROFILE = logging.PROFILE = 15
+@@ -15,6 +15,7 @@ PROFILE = logging.PROFILE = 15
TRACE = logging.TRACE = 5
GARBAGE = logging.GARBAGE = 1
QUIET = logging.QUIET = 1000
+DEBUG = logging.DEBUG = 10
--# Import Salt libs
from salt._logging.handlers import StreamHandler # isort:skip
- # from salt._logging.handlers import SysLogHandler # isort:skip
-@@ -52,7 +48,7 @@ LOG_LEVELS = {
- "warning": logging.WARNING,
- }
-
--LOG_VALUES_TO_LEVELS = dict((v, k) for (k, v) in LOG_LEVELS.items())
-+LOG_VALUES_TO_LEVELS = {v: k for (k, v) in LOG_LEVELS.items()}
-
- LOG_COLORS = {
- "levels": {
-@@ -96,9 +92,7 @@ LOG_COLORS = {
- }
-
- # Make a list of log level names sorted by log level
--SORTED_LEVEL_NAMES = [
-- l[0] for l in sorted(six.iteritems(LOG_LEVELS), key=lambda x: x[1])
--]
-+SORTED_LEVEL_NAMES = [l[0] for l in sorted(LOG_LEVELS.items(), key=lambda x: x[1])]
-
- MODNAME_PATTERN = re.compile(r"(?P<name>%%\(name\)(?:\-(?P<digits>[\d]+))?s)")
-
-@@ -168,8 +162,7 @@ def set_log_record_factory(factory):
- Set the logging log record factory
- """
- get_log_record_factory.__factory__ = factory
-- if not six.PY2:
-- logging.setLogRecordFactory(factory)
-+ logging.setLogRecordFactory(factory)
-
-
- set_log_record_factory(SaltLogRecord)
-@@ -180,7 +173,7 @@ LOGGING_LOGGER_CLASS = logging.getLoggerClass()
-
-
- class SaltLoggingClass(
-- six.with_metaclass(LoggingMixinMeta, LOGGING_LOGGER_CLASS, NewStyleClassMixin)
-+ LOGGING_LOGGER_CLASS, NewStyleClassMixin, metaclass=LoggingMixinMeta
- ):
- def __new__(cls, *args):
- """
-@@ -194,13 +187,11 @@ class SaltLoggingClass(
- logging.getLogger(__name__)
-
+@@ -182,11 +183,9 @@ class SaltLoggingClass(
"""
-- instance = super(SaltLoggingClass, cls).__new__(cls)
-+ instance = super().__new__(cls)
+ instance = super().__new__(cls)
- try:
- max_logger_length = len(
@@ -106,7 +41,7 @@
if handler in (
LOGGING_NULL_HANDLER,
LOGGING_STORE_HANDLER,
-@@ -221,18 +212,15 @@ class SaltLoggingClass(
+@@ -207,18 +206,15 @@ class SaltLoggingClass(
match = MODNAME_PATTERN.search(fmt)
if not match:
# Not matched. Release handler and return.
@@ -125,7 +60,7 @@
return instance
if int(digits) < max_logger_length:
-@@ -243,9 +231,14 @@ class SaltLoggingClass(
+@@ -229,9 +225,14 @@ class SaltLoggingClass(
)
handler.setFormatter(formatter)
handler.release()
@@ -143,16 +78,7 @@
return instance
def _log(
-@@ -279,7 +272,7 @@ class SaltLoggingClass(
- "Only one of 'exc_info' and 'exc_info_on_loglevel' is " "permitted"
- )
- if exc_info_on_loglevel is not None:
-- if isinstance(exc_info_on_loglevel, six.string_types):
-+ if isinstance(exc_info_on_loglevel, str):
- exc_info_on_loglevel = LOG_LEVELS.get(
- exc_info_on_loglevel, logging.ERROR
- )
-@@ -295,31 +288,37 @@ class SaltLoggingClass(
+@@ -281,31 +282,37 @@ class SaltLoggingClass(
else:
extra["exc_info_on_loglevel"] = exc_info_on_loglevel
@@ -215,64 +141,16 @@
def makeRecord(
self,
-@@ -357,7 +356,7 @@ class SaltLoggingClass(
- except NameError:
- salt_system_encoding = "utf-8"
-
-- if isinstance(msg, six.string_types) and not isinstance(msg, six.text_type):
-+ if isinstance(msg, str) and not isinstance(msg, str):
- try:
- _msg = msg.decode(salt_system_encoding, "replace")
- except UnicodeDecodeError:
-@@ -367,9 +366,7 @@ class SaltLoggingClass(
-
- _args = []
- for item in args:
-- if isinstance(item, six.string_types) and not isinstance(
-- item, six.text_type
-- ):
-+ if isinstance(item, str) and not isinstance(item, str):
- try:
- _args.append(item.decode(salt_system_encoding, "replace"))
- except UnicodeDecodeError:
-@@ -378,24 +375,9 @@ class SaltLoggingClass(
- _args.append(item)
- _args = tuple(_args)
-
-- if six.PY2:
-- # Recreate what's done for Py >= 3.5
-- _log_record_factory = get_log_record_factory()
-- logrecord = _log_record_factory(
-- name, level, fn, lno, _msg, _args, exc_info, func
-- )
--
-- if extra is not None:
-- for key in extra:
-- if (key in ["message", "asctime"]) or (key in logrecord.__dict__):
-- raise KeyError(
-- "Attempt to overwrite '{}' in LogRecord".format(key)
-- )
-- logrecord.__dict__[key] = extra[key]
-- else:
-- logrecord = LOGGING_LOGGER_CLASS.makeRecord(
-- self, name, level, fn, lno, _msg, _args, exc_info, func, sinfo
-- )
-+ logrecord = LOGGING_LOGGER_CLASS.makeRecord(
-+ self, name, level, fn, lno, _msg, _args, exc_info, func, sinfo
-+ )
-
- if exc_info_on_loglevel is not None:
- # Let's add some custom attributes to the LogRecord class in order
-@@ -419,6 +401,7 @@ if logging.getLoggerClass() is not SaltLoggingClass:
+@@ -395,6 +402,7 @@ if logging.getLoggerClass() is not SaltLoggingClass:
logging.addLevelName(PROFILE, "PROFILE")
logging.addLevelName(TRACE, "TRACE")
logging.addLevelName(GARBAGE, "GARBAGE")
+ logging.addLevelName(DEBUG, "DEBUG")
-
- # ----- REMOVE ON REFACTORING COMPLETE -------------------------------------------------------------------------->
- if not logging.root.handlers:
+ if pip_log_module is not None:
+ # Let's make newer versions of pip work by patching SaltLoggingClass to
+ # add a verbose method which is what pip expects
diff --git a/salt/client/ssh/__init__.py b/salt/client/ssh/__init__.py
-index ef9eb0c07e..6570fba5b1 100644
+index 01fb5e9a30..a4a74aa2c2 100644
--- a/salt/client/ssh/__init__.py
+++ b/salt/client/ssh/__init__.py
@@ -532,7 +532,9 @@ class SSH:
@@ -303,15 +181,10 @@
continue
ret = {}
diff --git a/salt/client/ssh/client.py b/salt/client/ssh/client.py
-index 55436366cf..d2dbdeb00e 100644
+index ef4287463b..037aea779c 100644
--- a/salt/client/ssh/client.py
+++ b/salt/client/ssh/client.py
-@@ -1,14 +1,10 @@
--# -*- coding: utf-8 -*-
--
--# Import Python libs
--from __future__ import absolute_import, print_function, unicode_literals
--
+@@ -1,7 +1,9 @@
import copy
import logging
+import multiprocessing
@@ -319,23 +192,17 @@
import random
+import time
--# Import Salt libs
import salt.config
- import salt.syspaths as syspaths
- import salt.utils.args
-@@ -16,8 +12,10 @@ from salt.exceptions import SaltClientError # Temporary
+ import salt.syspaths
+@@ -10,6 +12,7 @@ from salt.exceptions import SaltClientError
log = logging.getLogger(__name__)
+_LOCK = multiprocessing.Lock()
--class SSHClient(object):
-+
-+class SSHClient:
+ class SSHClient:
"""
- Create a client object for executing routines via the salt-ssh backend
-
-@@ -60,7 +58,11 @@ class SSHClient(object):
+@@ -124,7 +127,11 @@ class SSHClient:
opts["selected_target_option"] = tgt_type
opts["tgt"] = tgt
opts["arg"] = arg
@@ -348,60 +215,27 @@
def cmd_iter(
self,
-@@ -80,8 +82,7 @@ class SSHClient(object):
- .. versionadded:: 2015.5.0
- """
- ssh = self._prep_ssh(tgt, fun, arg, timeout, tgt_type, kwarg, **kwargs)
-- for ret in ssh.run_iter(jid=kwargs.get("jid", None)):
-- yield ret
-+ yield from ssh.run_iter(jid=kwargs.get("jid", None))
-
- def cmd(
- self, tgt, fun, arg=(), timeout=None, tgt_type="glob", kwarg=None, **kwargs
diff --git a/salt/client/ssh/wrapper/cp.py b/salt/client/ssh/wrapper/cp.py
-index e369d8475f..eb37ae971b 100644
+index 020dadfa35..af7d4f73f4 100644
--- a/salt/client/ssh/wrapper/cp.py
+++ b/salt/client/ssh/wrapper/cp.py
-@@ -1,15 +1,11 @@
--# -*- coding: utf-8 -*-
- """
+@@ -2,10 +2,10 @@
Wrap the cp module allowing for managed ssh file transfers
"""
--# Import Python libs
--from __future__ import absolute_import, print_function
-import logging
import os
--# Import salt libs
import salt.client.ssh
+import salt.log.setup as logging
import salt.utils.files
import salt.utils.stringutils
import salt.utils.templates
-@@ -107,7 +103,7 @@ def _render_filenames(path, dest, saltenv, template):
- if template not in salt.utils.templates.TEMPLATE_REGISTRY:
- raise CommandExecutionError(
- "Attempted to render file paths with unavailable engine "
-- "{0}".format(template)
-+ "{}".format(template)
- )
-
- kwargs = {}
-@@ -133,7 +129,7 @@ def _render_filenames(path, dest, saltenv, template):
- if not data["result"]:
- # Failed to render the template
- raise CommandExecutionError(
-- "Failed to render file path with error: {0}".format(data["data"])
-+ "Failed to render file path with error: {}".format(data["data"])
- )
- else:
- return data["data"]
diff --git a/salt/loader.py b/salt/loader.py
-index 9a9c11b401..cfcd18f6f3 100644
+index 491768a028..cdcec70262 100644
--- a/salt/loader.py
+++ b/salt/loader.py
-@@ -8,7 +8,6 @@ import functools
+@@ -10,7 +10,6 @@ import importlib
import importlib.machinery # pylint: disable=no-name-in-module,import-error
import importlib.util # pylint: disable=no-name-in-module,import-error
import inspect
@@ -409,14 +243,30 @@
import os
import re
import sys
-@@ -23,6 +22,7 @@ from zipimport import zipimporter
- import salt.config
+@@ -27,6 +26,7 @@ import salt.config
import salt.defaults.events
import salt.defaults.exitcodes
+ import salt.loader_context
+import salt.log.setup as logging
import salt.syspaths
import salt.utils.args
import salt.utils.context
+@@ -2195,7 +2195,7 @@ class LazyLoader(salt.utils.lazy.LazyDict):
+ mod.__name__, exc
+ )
+ )
+- log.error(error_reason, exc_info_on_loglevel=logging.DEBUG)
++ log.error(error_reason, exc_info_on_loglevel=logging.logging.DEBUG)
+ virtual = None
+ # Get the module's virtual name
+ virtualname = getattr(mod, "__virtualname__", virtual)
+@@ -2341,5 +2341,5 @@ def catch_entry_points_exception(entry_point):
+ entry_point_details.name,
+ entry_point_details.version,
+ exc,
+- exc_info_on_loglevel=logging.DEBUG,
++ exc_info_on_loglevel=logging.logging.DEBUG,
+ )
diff --git a/salt/utils/lazy.py b/salt/utils/lazy.py
index 8fc538164a..c828dd2c32 100644
--- a/salt/utils/lazy.py
@@ -463,6 +313,6 @@
else:
return self._dict[key]
--
-2.29.2
+2.33.0
++++++ restore-default-behaviour-of-pkg-list-return.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:21.020466286 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:21.020466286 +0200
@@ -1,4 +1,4 @@
-From 67e8afba4c33e65470dae3e39908868620f3ed11 Mon Sep 17 00:00:00 2001
+From 9885fa0fc9ec818515551b2a415e6f1b8e3680b9 Mon Sep 17 00:00:00 2001
From: Jochen Breuer <jbreuer(a)suse.de>
Date: Fri, 30 Aug 2019 14:20:06 +0200
Subject: [PATCH] Restore default behaviour of pkg list return
@@ -9,29 +9,26 @@
Co-authored-by: Mihai Dinca <mdinca(a)suse.de>
---
- salt/modules/zypperpkg.py | 38 ++++++++++++++++++++++++++------------
- 1 file changed, 26 insertions(+), 12 deletions(-)
+ salt/modules/zypperpkg.py | 34 +++++++++++++++++++++++++---------
+ 1 file changed, 25 insertions(+), 9 deletions(-)
diff --git a/salt/modules/zypperpkg.py b/salt/modules/zypperpkg.py
-index b099f3e5d7..2daec0f380 100644
+index 6af922337f..ac618bd385 100644
--- a/salt/modules/zypperpkg.py
+++ b/salt/modules/zypperpkg.py
-@@ -1422,10 +1422,10 @@ def refresh_db(force=None, root=None):
+@@ -1401,8 +1401,10 @@ def refresh_db(force=None, root=None):
return ret
-def _find_types(pkgs):
-- """
-- Form a package names list, find prefixes of packages types.
-- """
+def _detect_includes(pkgs, inclusion_detection):
-+ """Form a package names list, find prefixes of packages types."""
+ """Form a package names list, find prefixes of packages types."""
+ if not inclusion_detection:
+ return None
return sorted({pkg.split(":", 1)[0] for pkg in pkgs if len(pkg.split(":", 1)) == 2})
-@@ -1441,6 +1441,7 @@ def install(
+@@ -1418,6 +1420,7 @@ def install(
ignore_repo_failure=False,
no_recommends=False,
root=None,
@@ -39,7 +36,7 @@
**kwargs
):
"""
-@@ -1556,6 +1557,9 @@ def install(
+@@ -1533,6 +1536,9 @@ def install(
.. versionadded:: 2018.3.0
@@ -49,7 +46,7 @@
Returns a dict containing the new package names and versions::
-@@ -1626,7 +1630,8 @@ def install(
+@@ -1608,7 +1614,8 @@ def install(
diff_attr = kwargs.get("diff_attr")
@@ -59,7 +56,7 @@
old = (
list_pkgs(attr=diff_attr, root=root, includes=includes)
if not downloadonly
-@@ -1850,7 +1855,7 @@ def upgrade(
+@@ -1838,7 +1845,7 @@ def upgrade(
return ret
@@ -68,7 +65,7 @@
"""
Remove and purge do identical things but with different Zypper commands,
this function performs the common logic.
-@@ -1860,7 +1865,7 @@ def _uninstall(name=None, pkgs=None, root=None):
+@@ -1848,7 +1855,7 @@ def _uninstall(name=None, pkgs=None, root=None):
except MinionError as exc:
raise CommandExecutionError(exc)
@@ -77,7 +74,7 @@
old = list_pkgs(root=root, includes=includes)
targets = []
for target in pkg_params:
-@@ -1923,7 +1928,7 @@ def normalize_name(name):
+@@ -1911,7 +1918,7 @@ def normalize_name(name):
def remove(
@@ -86,7 +83,7 @@
): # pylint: disable=unused-argument
"""
.. versionchanged:: 2015.8.12,2016.3.3,2016.11.0
-@@ -1955,8 +1960,11 @@ def remove(
+@@ -1943,8 +1950,11 @@ def remove(
root
Operate on a different root directory.
@@ -99,7 +96,7 @@
Returns a dict containing the changes.
-@@ -1968,10 +1976,12 @@ def remove(
+@@ -1956,10 +1966,12 @@ def remove(
salt '*' pkg.remove <package1>,<package2>,<package3>
salt '*' pkg.remove pkgs='["foo", "bar"]'
"""
@@ -114,7 +111,7 @@
"""
.. versionchanged:: 2015.8.12,2016.3.3,2016.11.0
On minions running systemd>=205, `systemd-run(1)`_ is now used to
-@@ -2003,6 +2013,10 @@ def purge(name=None, pkgs=None, root=None, **kwargs): # pylint: disable=unused-
+@@ -1991,6 +2003,10 @@ def purge(name=None, pkgs=None, root=None, **kwargs): # pylint: disable=unused-
root
Operate on a different root directory.
@@ -125,7 +122,7 @@
.. versionadded:: 0.16.0
-@@ -2016,7 +2030,7 @@ def purge(name=None, pkgs=None, root=None, **kwargs): # pylint: disable=unused-
+@@ -2004,7 +2020,7 @@ def purge(name=None, pkgs=None, root=None, **kwargs): # pylint: disable=unused-
salt '*' pkg.purge <package1>,<package2>,<package3>
salt '*' pkg.purge pkgs='["foo", "bar"]'
"""
@@ -135,6 +132,6 @@
def list_locks(root=None):
--
-2.29.2
+2.33.0
++++++ return-the-expected-powerpc-os-arch-bsc-1117995.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:21.028466295 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:21.028466295 +0200
@@ -1,37 +1,17 @@
-From 9365531537f2b80e0a0d1481edfa60de8331d07d Mon Sep 17 00:00:00 2001
+From 2883215dfb434d4056812ed96d968f7043501d70 Mon Sep 17 00:00:00 2001
From: Mihai Dinca <mdinca(a)suse.de>
Date: Thu, 13 Dec 2018 12:17:35 +0100
Subject: [PATCH] Return the expected powerpc os arch (bsc#1117995)
---
- salt/utils/pkg/rpm.py | 22 +++++++++-------------
- 1 file changed, 9 insertions(+), 13 deletions(-)
+ salt/utils/pkg/rpm.py | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/salt/utils/pkg/rpm.py b/salt/utils/pkg/rpm.py
-index 2ee2bac4e5..d1b149ea0b 100644
+index ba600e106b..3e990cc05d 100644
--- a/salt/utils/pkg/rpm.py
+++ b/salt/utils/pkg/rpm.py
-@@ -1,10 +1,7 @@
--# -*- coding: utf-8 -*-
- """
- Common functions for working with RPM packages
- """
-
--# Import python libs
--from __future__ import absolute_import, print_function, unicode_literals
-
- import collections
- import datetime
-@@ -14,8 +11,6 @@ import subprocess
-
- import salt.utils.path
- import salt.utils.stringutils
--
--# Import 3rd-party libs
- from salt.ext import six
-
- log = logging.getLogger(__name__)
-@@ -68,9 +63,10 @@ def get_osarch():
+@@ -59,9 +59,10 @@ def get_osarch():
stderr=subprocess.PIPE,
).communicate()[0]
else:
@@ -45,47 +25,7 @@
def check_32(arch, osarch=None):
-@@ -102,7 +98,7 @@ def resolve_name(name, arch, osarch=None):
- osarch = get_osarch()
-
- if not check_32(arch, osarch) and arch not in (osarch, "noarch"):
-- name += ".{0}".format(arch)
-+ name += ".{}".format(arch)
- return name
-
-
-@@ -120,7 +116,7 @@ def parse_pkginfo(line, osarch=None):
-
- name = resolve_name(name, arch, osarch)
- if release:
-- version += "-{0}".format(release)
-+ version += "-{}".format(release)
- if epoch not in ("(none)", "0"):
- version = ":".join((epoch, version))
-
-@@ -146,10 +142,10 @@ def combine_comments(comments):
- comments = [comments]
- ret = []
- for comment in comments:
-- if not isinstance(comment, six.string_types):
-+ if not isinstance(comment, str):
- comment = str(comment)
- # Normalize for any spaces (or lack thereof) after the #
-- ret.append("# {0}\n".format(comment.lstrip("#").lstrip()))
-+ ret.append("# {}\n".format(comment.lstrip("#").lstrip()))
- return "".join(ret)
-
-
-@@ -171,7 +167,7 @@ def version_to_evr(verstring):
- idx_e = verstring.find(":")
- if idx_e != -1:
- try:
-- epoch = six.text_type(int(verstring[:idx_e]))
-+ epoch = str(int(verstring[:idx_e]))
- except ValueError:
- # look, garbage in the epoch field, how fun, kill it
- epoch = "0" # this is our fallback, deal
--
-2.29.2
+2.33.0
++++++ revert-fixing-a-use-case-when-multiple-inotify-beaco.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:21.040466309 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:21.040466309 +0200
@@ -1,31 +1,31 @@
-From 5ea2f10b15684dd417bad858642faafc92cd382a Mon Sep 17 00:00:00 2001
+From 93a38f70953f48d10e21ba8601e1a562a4b739fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
<psuarezhernandez(a)suse.com>
Date: Tue, 5 Jan 2021 12:31:26 +0000
-Subject: [PATCH] Revert "Fixing a use case when multiple inotify
- beacons are defined but when notifications are fired the configuration fron
- the first beacon are used." Revert "Adding a util function to remove hidden
- (options starting with underscore) from the beacon configuration. This is
- used when the beacons loop through the configuration, eg. status beacon, and
- expect certain options."
+Subject: [PATCH] Revert "Fixing a use case when multiple inotify beacons
+ are defined but when notifications are fired the configuration fron the first
+ beacon are used." Revert "Adding a util function to remove hidden (options
+ starting with underscore) from the beacon configuration. This is used when
+ the beacons loop through the configuration, eg. status beacon, and expect
+ certain options."
This reverts commit 68a891ab2fe53ebf329b9c83b875f3575e87e266.
This reverts commit 66c58dedf8c364eaeb35c5adce8bcc8fe5c1219a.
---
salt/beacons/__init__.py | 1 -
salt/beacons/diskusage.py | 3 ---
- salt/beacons/inotify.py | 25 ++++++-------------
+ salt/beacons/inotify.py | 25 +++++++------------
salt/beacons/napalm_beacon.py | 6 ++---
salt/beacons/status.py | 4 ---
tests/unit/beacons/test_inotify.py | 39 ------------------------------
tests/unit/test_beacons.py | 25 +++----------------
- 7 files changed, 14 insertions(+), 89 deletions(-)
+ 7 files changed, 15 insertions(+), 88 deletions(-)
diff --git a/salt/beacons/__init__.py b/salt/beacons/__init__.py
-index 6951a0ce47..0570006348 100644
+index cd00b15275..967f9ff64b 100644
--- a/salt/beacons/__init__.py
+++ b/salt/beacons/__init__.py
-@@ -72,7 +72,6 @@ class Beacon:
+@@ -70,7 +70,6 @@ class Beacon:
beacon_name = current_beacon_config["beacon_module"]
else:
beacon_name = mod
@@ -34,10 +34,10 @@
validate_str = "{}.validate".format(beacon_name)
if fun_str in self.beacons:
diff --git a/salt/beacons/diskusage.py b/salt/beacons/diskusage.py
-index c7d4acfa3a..475d520de6 100644
+index 5624ebaffd..a015eebdc7 100644
--- a/salt/beacons/diskusage.py
+++ b/salt/beacons/diskusage.py
-@@ -10,7 +10,6 @@ Beacon to monitor disk usage.
+@@ -8,7 +8,6 @@ Beacon to monitor disk usage.
import logging
import re
@@ -45,7 +45,7 @@
import salt.utils.platform
try:
-@@ -83,8 +82,6 @@ def beacon(config):
+@@ -81,8 +80,6 @@ def beacon(config):
it will override the previously defined threshold.
"""
@@ -55,18 +55,18 @@
ret = []
for mounts in config:
diff --git a/salt/beacons/inotify.py b/salt/beacons/inotify.py
-index b4bb6def5b..fa2f73c35f 100644
+index 4d9ffbeb87..031da181f0 100644
--- a/salt/beacons/inotify.py
+++ b/salt/beacons/inotify.py
-@@ -21,7 +21,6 @@ import os
+@@ -21,6 +21,7 @@ import os
import re
- import salt.ext.six
--import salt.utils.beacons
+ import salt.utils.beacons
++import salt.ext.six
- # pylint: disable=import-error
- from salt.ext.six.moves import map
-@@ -71,19 +70,17 @@ def _get_notifier(config):
+ try:
+ import pyinotify
+@@ -65,19 +66,17 @@ def _get_notifier(config):
"""
Check the context for the notifier and construct it if not present
"""
@@ -90,7 +90,7 @@
def validate(config):
-@@ -259,10 +256,6 @@ def beacon(config):
+@@ -253,10 +252,6 @@ def beacon(config):
affects all paths that are being watched. This is due to this option
being at the Notifier level in pyinotify.
"""
@@ -101,7 +101,7 @@
_config = {}
list(map(_config.update, config))
-@@ -286,7 +279,7 @@ def beacon(config):
+@@ -280,7 +275,7 @@ def beacon(config):
break
path = os.path.dirname(path)
@@ -110,7 +110,7 @@
if excludes and isinstance(excludes, list):
for exclude in excludes:
-@@ -373,8 +366,6 @@ def beacon(config):
+@@ -367,8 +362,6 @@ def beacon(config):
def close(config):
@@ -149,10 +149,10 @@
log.debug(config)
ret = []
diff --git a/salt/beacons/status.py b/salt/beacons/status.py
-index d6b6150f28..82ed19bc47 100644
+index bd7046aaa1..a30bf5f4e6 100644
--- a/salt/beacons/status.py
+++ b/salt/beacons/status.py
-@@ -93,7 +93,6 @@ import datetime
+@@ -91,7 +91,6 @@ import datetime
import logging
import salt.exceptions
@@ -160,7 +160,7 @@
import salt.utils.platform
log = logging.getLogger(__name__)
-@@ -121,9 +120,6 @@ def beacon(config):
+@@ -119,9 +118,6 @@ def beacon(config):
log.debug(config)
ctime = datetime.datetime.utcnow().isoformat()
@@ -265,6 +265,6 @@
- beacon.process(mock_opts["beacons"], mock_opts["grains"])
- patched[name].assert_has_calls(calls)
--
-2.29.2
+2.33.0
++++++ support-transactional-systems-microos-271.patch -> support-transactional-systems-microos.patch ++++++
++++ 3378 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/salt/support-transactional-systems-microos-271.patch
++++ and /work/SRC/openSUSE:Factory/.salt.new.2443/support-transactional-systems-microos.patch
++++++ templates-move-the-globals-up-to-the-environment-jin.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:21.080466355 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:21.080466355 +0200
@@ -1,4 +1,4 @@
-From 1e8f506827bcf32bfe7e87763fa854a13729f2c8 Mon Sep 17 00:00:00 2001
+From 4664c4b31fdef9ef5b3987b9d993ccba2675d18f Mon Sep 17 00:00:00 2001
From: Alberto Planas <aplanas(a)suse.com>
Date: Tue, 31 Aug 2021 11:20:49 +0200
Subject: [PATCH] templates: move the globals up to the Environment
@@ -39,9 +39,9 @@
---
changelog/55159.fixed | 1 +
salt/utils/jinja.py | 2 +-
- salt/utils/templates.py | 2 +-
+ salt/utils/templates.py | 3 ++-
tests/unit/utils/test_jinja.py | 16 ++++++++++++++++
- 4 files changed, 19 insertions(+), 2 deletions(-)
+ 4 files changed, 20 insertions(+), 2 deletions(-)
create mode 100644 changelog/55159.fixed
diff --git a/changelog/55159.fixed b/changelog/55159.fixed
@@ -52,10 +52,10 @@
@@ -0,0 +1 @@
+Jinja renderer resolves wrong relative paths when importing subdirectories
diff --git a/salt/utils/jinja.py b/salt/utils/jinja.py
-index 997d4b1697..e1ac4657f9 100644
+index 68a8646474..3f27c2c7e1 100644
--- a/salt/utils/jinja.py
+++ b/salt/utils/jinja.py
-@@ -155,7 +155,7 @@ class SaltCacheLoader(BaseLoader):
+@@ -148,7 +148,7 @@ class SaltCacheLoader(BaseLoader):
'Relative path "%s" cannot be resolved without an environment',
template,
)
@@ -65,13 +65,14 @@
_template = os.path.normpath("/".join((base_path, _template)))
if _template.split("/", 1)[0] == "..":
diff --git a/salt/utils/templates.py b/salt/utils/templates.py
-index 1fda960b2e..f369da5c9e 100644
+index 0f705cfa37..4c59553bc8 100644
--- a/salt/utils/templates.py
+++ b/salt/utils/templates.py
-@@ -492,9 +492,9 @@ def render_jinja_tmpl(tmplstr, context, tmplpath=None):
+@@ -494,9 +494,10 @@ def render_jinja_tmpl(tmplstr, context, tmplpath=None):
+ SLS_ENCODING,
)
decoded_context[key] = salt.utils.data.decode(value)
-
++
+ jinja_env.globals.update(decoded_context)
try:
template = jinja_env.from_string(tmplstr)
@@ -80,10 +81,10 @@
except jinja2.exceptions.UndefinedError as exc:
trace = traceback.extract_tb(sys.exc_info()[2])
diff --git a/tests/unit/utils/test_jinja.py b/tests/unit/utils/test_jinja.py
-index 807e901afa..0219512097 100644
+index fb67e17fa2..e23caf11ae 100644
--- a/tests/unit/utils/test_jinja.py
+++ b/tests/unit/utils/test_jinja.py
-@@ -612,6 +612,22 @@ class TestGetTemplate(TestCase):
+@@ -619,6 +619,22 @@ class TestGetTemplate(TestCase):
dict(opts=self.local_opts, saltenv="test", salt=self.local_salt),
)
++++++ temporary-fix-extend-the-whitelist-of-allowed-comman.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:21.088466364 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:21.088466364 +0200
@@ -1,31 +1,25 @@
-From 7605781decd03cb493e09893aa60a5cdbed15d35 Mon Sep 17 00:00:00 2001
+From 2bfea35790926e3d4cbecd5f78f695deb8b086ec Mon Sep 17 00:00:00 2001
From: Bo Maryniuk <bo(a)suse.de>
Date: Thu, 24 Jan 2019 18:12:35 +0100
-Subject: [PATCH] temporary fix: extend the whitelist of allowed
- commands
+Subject: [PATCH] temporary fix: extend the whitelist of allowed commands
---
- salt/auth/__init__.py | 48 +++++++++++++++++++++----------------------
- 1 file changed, 24 insertions(+), 24 deletions(-)
+ salt/auth/__init__.py | 3 +++
+ 1 file changed, 3 insertions(+)
diff --git a/salt/auth/__init__.py b/salt/auth/__init__.py
-index c4cf163a67..ee1eac7ce4 100644
+index 6e970173b4..3b73c2ec08 100644
--- a/salt/auth/__init__.py
+++ b/salt/auth/__init__.py
-@@ -1,4 +1,3 @@
--# -*- coding: utf-8 -*-
- """
- Salt's pluggable authentication system
-
-@@ -13,7 +12,6 @@ so that any external authentication system can be used inside of Salt
+@@ -12,6 +12,7 @@ so that any external authentication system can be used inside of Salt
# 5. Cache auth token with relative data opts['token_dir']
# 6. Interface to verify tokens
--from __future__ import absolute_import, print_function, unicode_literals
-
- import collections
++
import getpass
-@@ -48,6 +46,8 @@ AUTH_INTERNAL_KEYWORDS = frozenset(
+ import logging
+ import random
+@@ -42,6 +43,8 @@ AUTH_INTERNAL_KEYWORDS = frozenset(
"gather_job_timeout",
"kwarg",
"match",
@@ -34,189 +28,7 @@
"metadata",
"print_event",
"raw",
-@@ -56,7 +56,7 @@ AUTH_INTERNAL_KEYWORDS = frozenset(
- )
-
-
--class LoadAuth(object):
-+class LoadAuth:
- """
- Wrap the authentication system to handle peripheral components
- """
-@@ -76,7 +76,7 @@ class LoadAuth(object):
- """
- if "eauth" not in load:
- return ""
-- fstr = "{0}.auth".format(load["eauth"])
-+ fstr = "{}.auth".format(load["eauth"])
- if fstr not in self.auth:
- return ""
- try:
-@@ -94,7 +94,7 @@ class LoadAuth(object):
- """
- if "eauth" not in load:
- return False
-- fstr = "{0}.auth".format(load["eauth"])
-+ fstr = "{}.auth".format(load["eauth"])
- if fstr not in self.auth:
- return False
- # When making auth calls, only username, password, auth, and token
-@@ -144,7 +144,7 @@ class LoadAuth(object):
- mod = self.opts["eauth_acl_module"]
- if not mod:
- mod = load["eauth"]
-- fstr = "{0}.acl".format(mod)
-+ fstr = "{}.acl".format(mod)
- if fstr not in self.auth:
- return None
- fcall = salt.utils.args.format_call(
-@@ -163,7 +163,7 @@ class LoadAuth(object):
- """
- if "eauth" not in load:
- return auth_list
-- fstr = "{0}.process_acl".format(load["eauth"])
-+ fstr = "{}.process_acl".format(load["eauth"])
- if fstr not in self.auth:
- return auth_list
- try:
-@@ -179,7 +179,7 @@ class LoadAuth(object):
- """
- if "eauth" not in load:
- return False
-- fstr = "{0}.groups".format(load["eauth"])
-+ fstr = "{}.groups".format(load["eauth"])
- if fstr not in self.auth:
- return False
- fcall = salt.utils.args.format_call(
-@@ -237,7 +237,7 @@ class LoadAuth(object):
- if groups:
- tdata["groups"] = groups
-
-- return self.tokens["{0}.mk_token".format(self.opts["eauth_tokens"])](
-+ return self.tokens["{}.mk_token".format(self.opts["eauth_tokens"])](
- self.opts, tdata
- )
-
-@@ -248,7 +248,7 @@ class LoadAuth(object):
- """
- tdata = {}
- try:
-- tdata = self.tokens["{0}.get_token".format(self.opts["eauth_tokens"])](
-+ tdata = self.tokens["{}.get_token".format(self.opts["eauth_tokens"])](
- self.opts, tok
- )
- except salt.exceptions.SaltDeserializationError:
-@@ -275,7 +275,7 @@ class LoadAuth(object):
- """
- List all tokens in eauth_tokn storage.
- """
-- return self.tokens["{0}.list_tokens".format(self.opts["eauth_tokens"])](
-+ return self.tokens["{}.list_tokens".format(self.opts["eauth_tokens"])](
- self.opts
- )
-
-@@ -283,7 +283,7 @@ class LoadAuth(object):
- """
- Remove the given token from token storage.
- """
-- self.tokens["{0}.rm_token".format(self.opts["eauth_tokens"])](self.opts, tok)
-+ self.tokens["{}.rm_token".format(self.opts["eauth_tokens"])](self.opts, tok)
-
- def authenticate_token(self, load):
- """
-@@ -459,7 +459,7 @@ class LoadAuth(object):
- ret["error"] = {
- "name": "EauthAuthenticationError",
- "message": 'Authentication failure of type "eauth" occurred for '
-- "user {0}.".format(username),
-+ "user {}.".format(username),
- }
- return ret
-
-@@ -469,7 +469,7 @@ class LoadAuth(object):
- msg = 'Authentication failure of type "user" occurred'
- if not auth_ret: # auth_ret can be a boolean or the effective user id
- if show_username:
-- msg = "{0} for user {1}.".format(msg, username)
-+ msg = "{} for user {}.".format(msg, username)
- ret["error"] = {"name": "UserAuthenticationError", "message": msg}
- return ret
-
-@@ -501,7 +501,7 @@ class LoadAuth(object):
- return ret
-
-
--class Resolver(object):
-+class Resolver:
- """
- The class used to resolve options for the command line and for generic
- interactive interfaces
-@@ -514,7 +514,7 @@ class Resolver(object):
- def _send_token_request(self, load):
- master_uri = "tcp://{}:{}".format(
- salt.utils.zeromq.ip_bracket(self.opts["interface"]),
-- six.text_type(self.opts["ret_port"]),
-+ str(self.opts["ret_port"]),
- )
- with salt.transport.client.ReqChannel.factory(
- self.opts, crypt="clear", master_uri=master_uri
-@@ -530,16 +530,16 @@ class Resolver(object):
- if not eauth:
- print("External authentication system has not been specified")
- return ret
-- fstr = "{0}.auth".format(eauth)
-+ fstr = "{}.auth".format(eauth)
- if fstr not in self.auth:
- print(
- (
-- 'The specified external authentication system "{0}" is '
-+ 'The specified external authentication system "{}" is '
- "not available"
- ).format(eauth)
- )
- print(
-- "Available eauth types: {0}".format(
-+ "Available eauth types: {}".format(
- ", ".join([k[:-5] for k in self.auth if k.endswith(".auth")])
- )
- )
-@@ -550,14 +550,14 @@ class Resolver(object):
- if arg in self.opts:
- ret[arg] = self.opts[arg]
- elif arg.startswith("pass"):
-- ret[arg] = getpass.getpass("{0}: ".format(arg))
-+ ret[arg] = getpass.getpass("{}: ".format(arg))
- else:
-- ret[arg] = input("{0}: ".format(arg))
-+ ret[arg] = input("{}: ".format(arg))
- for kwarg, default in list(args["kwargs"].items()):
- if kwarg in self.opts:
- ret["kwarg"] = self.opts[kwarg]
- else:
-- ret[kwarg] = input("{0} [{1}]: ".format(kwarg, default))
-+ ret[kwarg] = input("{} [{}]: ".format(kwarg, default))
-
- # Use current user if empty
- if "username" in ret and not ret["username"]:
-@@ -579,7 +579,7 @@ class Resolver(object):
- with salt.utils.files.set_umask(0o177):
- with salt.utils.files.fopen(self.opts["token_file"], "w+") as fp_:
- fp_.write(tdata["token"])
-- except (IOError, OSError):
-+ except OSError:
- pass
- return tdata
-
-@@ -602,7 +602,7 @@ class Resolver(object):
- return tdata
-
-
--class AuthUser(object):
-+class AuthUser:
- """
- Represents a user requesting authentication to the salt master
- """
--
-2.29.2
+2.33.0
++++++ update-target-fix-for-salt-ssh-to-process-targets-li.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:21.124466405 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:21.128466409 +0200
@@ -1,18 +1,20 @@
-From a603d31c4d3ace3590952ef848f4244c41abe7c8 Mon Sep 17 00:00:00 2001
+From eb51c650e39359851588b611a0802d06eedeb5b5 Mon Sep 17 00:00:00 2001
From: Victor Zhestkov <35733135+vzhestkov(a)users.noreply.github.com>
Date: Fri, 9 Apr 2021 16:01:32 +0300
-Subject: [PATCH] Update target fix for salt-ssh to process targets
- list (bsc#1179831) (#336)
+Subject: [PATCH] Update target fix for salt-ssh to process targets list
+ (bsc#1179831) (#336)
* Update target fix for salt-ssh to process targets list (bsc#1179831)
* Improvement for fixing (bsc#1179831)
+
+Regression fix of salt-ssh on processing targets (#353)
---
- salt/client/ssh/__init__.py | 48 ++++++++++++++++++++++++-------------
- 1 file changed, 31 insertions(+), 17 deletions(-)
+ salt/client/ssh/__init__.py | 46 +++++++++++++++++++++++--------------
+ 1 file changed, 29 insertions(+), 17 deletions(-)
diff --git a/salt/client/ssh/__init__.py b/salt/client/ssh/__init__.py
-index 6570fba5b1..1edb7b3b23 100644
+index a4a74aa2c2..409d6e740e 100644
--- a/salt/client/ssh/__init__.py
+++ b/salt/client/ssh/__init__.py
@@ -325,7 +325,7 @@ class SSH:
@@ -44,7 +46,7 @@
passwd=self.opts.get("ssh_passwd", ""),
)
)
-@@ -409,20 +409,34 @@ class SSH:
+@@ -409,20 +409,32 @@ class SSH:
Uptade targets in case hostname was directly passed without the roster.
:return:
"""
@@ -87,12 +89,10 @@
+ self.opts["tgt"] = _hosts
+ elif _hosts:
+ self.opts["tgt"] = _hosts[0]
-+ else:
-+ self.opts["tgt"] = ""
def get_pubkey(self):
"""
--
-2.31.1
+2.33.0
++++++ use-adler32-algorithm-to-compute-string-checksums.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:21.136466419 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:21.136466419 +0200
@@ -1,4 +1,4 @@
-From 267868c148619be1eb89bcfa9c1184fa809fce2d Mon Sep 17 00:00:00 2001
+From db2573bebc90f6e1b445c34ddd707ad547c4325a Mon Sep 17 00:00:00 2001
From: Bo Maryniuk <bo(a)suse.de>
Date: Sat, 28 Jul 2018 22:59:04 +0200
Subject: [PATCH] Use Adler32 algorithm to compute string checksums
@@ -14,38 +14,42 @@
Choose CRC method, default to faster but less reliable "adler32", if crc is in use
Add warning for Sodium.
+
+Move server_id deprecation warning to reduce log spamming (bsc#1135567) (bsc#1135732)
+
+Remove deprecated warning that breaks miniion execution when "server_id_use_crc" opts are missing
---
- salt/config/__init__.py | 4 +++
- salt/grains/core.py | 56 ++++++++++++++++++++++++++++++++++++++---
- 2 files changed, 56 insertions(+), 4 deletions(-)
+ salt/config/__init__.py | 4 ++++
+ salt/grains/core.py | 49 +++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 49 insertions(+), 4 deletions(-)
diff --git a/salt/config/__init__.py b/salt/config/__init__.py
-index 8b498ab9e2..6d30fca072 100644
+index e63489cbce..e05cdfafda 100644
--- a/salt/config/__init__.py
+++ b/salt/config/__init__.py
-@@ -945,6 +945,9 @@ VALID_OPTS = immutabletypes.freeze(
- "disabled_requisites": (str, list),
+@@ -953,6 +953,9 @@ VALID_OPTS = immutabletypes.freeze(
# Feature flag config
"features": dict,
+ "fips_mode": bool,
+ # Use Adler32 hashing algorithm for server_id (default False until Sodium, "adler32" after)
+ # Possible values are: False, adler32, crc32
+ "server_id_use_crc": (bool, str),
}
)
-@@ -1243,6 +1246,7 @@ DEFAULT_MINION_OPTS = immutabletypes.freeze(
- "schedule": {},
- "ssh_merge_pillar": True,
+@@ -1256,6 +1259,7 @@ DEFAULT_MINION_OPTS = immutabletypes.freeze(
"disabled_requisites": [],
+ "reactor_niceness": None,
+ "fips_mode": False,
+ "server_id_use_crc": False,
}
)
diff --git a/salt/grains/core.py b/salt/grains/core.py
-index 00bd0565bf..5535584d1b 100644
+index fdf0a6f0d8..e007f40c92 100644
--- a/salt/grains/core.py
+++ b/salt/grains/core.py
-@@ -20,6 +20,7 @@ import socket
+@@ -21,6 +21,7 @@ import subprocess
import sys
import time
import uuid
@@ -53,7 +57,7 @@
from errno import EACCES, EPERM
import distro
-@@ -39,6 +40,7 @@ import salt.utils.path
+@@ -40,6 +41,7 @@ import salt.utils.path
import salt.utils.pkg.rpm
import salt.utils.platform
import salt.utils.stringutils
@@ -61,7 +65,7 @@
from salt.ext.six.moves import range
from salt.utils.network import _get_interfaces
-@@ -2935,6 +2937,36 @@ def _hw_data(osdata):
+@@ -2981,6 +2983,36 @@ def _hw_data(osdata):
return grains
@@ -98,7 +102,7 @@
def get_server_id():
"""
Provides an integer based on the FQDN of a machine.
-@@ -2945,10 +2977,26 @@ def get_server_id():
+@@ -2991,10 +3023,19 @@ def get_server_id():
# server_id
if salt.utils.platform.is_proxy():
@@ -115,13 +119,6 @@
+ & 0xFFFFFFFF
+ )
+ else:
-+ salt.utils.versions.warn_until(
-+ "Sodium",
-+ "This server_id is computed nor by Adler32 neither by CRC32. "
-+ 'Please use "server_id_use_crc" option and define algorithm you'
-+ 'prefer (default "Adler32"). The server_id will be computed with'
-+ "Adler32 by default.",
-+ )
+ id_hash = _get_hash_by_shell()
+ server_id = {"server_id": id_hash}
+
@@ -130,6 +127,6 @@
def get_master():
--
-2.29.2
+2.33.0
++++++ v3002.2.tar.gz -> v3003.3.tar.gz ++++++
/work/SRC/openSUSE:Factory/salt/v3002.2.tar.gz /work/SRC/openSUSE:Factory/.salt.new.2443/v3003.3.tar.gz differ: char 13, line 1
++++++ virt-enhancements.patch ++++++
++++ 1602 lines (skipped)
++++++ x509-fixes-111.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:21.164466451 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:21.164466451 +0200
@@ -1,4 +1,4 @@
-From d947df3004323a3d400aaf7b5d94580965bf4a11 Mon Sep 17 00:00:00 2001
+From e16881c36b535c4798d0bfda089efd9323957fec Mon Sep 17 00:00:00 2001
From: Florian Bergmann <bergmannf(a)users.noreply.github.com>
Date: Fri, 14 Sep 2018 10:30:39 +0200
Subject: [PATCH] X509 fixes (#111)
@@ -32,11 +32,16 @@
* Do not return None if no matched minions found
* Fix unit tests
+
+Fix for log checking in x509 test
+
+We are logging in debug and not in trace mode here.
---
- salt/modules/publish.py | 17 +++----
- salt/modules/x509.py | 100 ++++++++++++++++++++--------------------
- salt/states/x509.py | 75 ++++++++++++++++++++++++++++--
- 3 files changed, 129 insertions(+), 63 deletions(-)
+ salt/modules/publish.py | 17 +++---
+ salt/modules/x509.py | 100 ++++++++++++++++----------------
+ salt/states/x509.py | 74 +++++++++++++++++++++--
+ tests/unit/modules/test_x509.py | 6 +-
+ 4 files changed, 131 insertions(+), 66 deletions(-)
diff --git a/salt/modules/publish.py b/salt/modules/publish.py
index 0926f3fa13..6d56c4d08e 100644
@@ -100,7 +105,7 @@
- return "'{0}' runner publish timed out".format(fun)
+ return "'{}' runner publish timed out".format(fun)
diff --git a/salt/modules/x509.py b/salt/modules/x509.py
-index ec9c92c008..9b475f3096 100644
+index 43a134625f..d8e6ae3baa 100644
--- a/salt/modules/x509.py
+++ b/salt/modules/x509.py
@@ -30,16 +30,13 @@ from salt.utils.odict import OrderedDict
@@ -371,16 +376,14 @@
return ret
diff --git a/salt/states/x509.py b/salt/states/x509.py
-index 8269df2f37..5ad7195b7c 100644
+index 80e1ecdd6d..3a54ad3ba3 100644
--- a/salt/states/x509.py
+++ b/salt/states/x509.py
-@@ -177,12 +177,14 @@ import os
+@@ -177,11 +177,12 @@ import os
import re
import salt.exceptions
+import salt.utils.stringutils
- import salt.utils.versions
-+from salt.ext import six
try:
from M2Crypto.RSA import RSAError
@@ -390,7 +393,7 @@
log = logging.getLogger(__name__)
-@@ -194,7 +196,7 @@ def __virtual__():
+@@ -193,7 +194,7 @@ def __virtual__():
if "x509.get_pem_entry" in __salt__:
return "x509"
else:
@@ -399,7 +402,7 @@
def _revoked_to_list(revs):
-@@ -696,7 +698,70 @@ def certificate_managed(
+@@ -683,7 +684,70 @@ def certificate_managed(name, days_remaining=90, append_certs=None, **kwargs):
"Old": invalid_reason,
"New": "Certificate will be valid and up to date",
}
@@ -471,7 +474,7 @@
contents = __salt__["x509.create_certificate"](text=True, **kwargs)
# Check the module actually returned a cert and not an error message as a string
-@@ -892,6 +957,8 @@ def pem_managed(name, text, backup=False, **kwargs):
+@@ -879,6 +943,8 @@ def pem_managed(name, text, backup=False, **kwargs):
Any arguments supported by :py:func:`file.managed <salt.states.file.managed>` are supported.
"""
file_args, kwargs = _get_file_args(name, **kwargs)
@@ -481,7 +484,24 @@
+ )
return __states__["file.managed"](**file_args)
+diff --git a/tests/unit/modules/test_x509.py b/tests/unit/modules/test_x509.py
+index 20ca0d679a..8fa799437d 100644
+--- a/tests/unit/modules/test_x509.py
++++ b/tests/unit/modules/test_x509.py
+@@ -118,9 +118,9 @@ class X509TestCase(TestCase, LoaderModuleMockMixin):
+
+ subj = FakeSubject()
+ x509._parse_subject(subj)
+- assert x509.log.trace.call_args[0][0] == "Missing attribute '%s'. Error: %s"
+- assert x509.log.trace.call_args[0][1] == list(subj.nid.keys())[0]
+- assert isinstance(x509.log.trace.call_args[0][2], TypeError)
++ assert x509.log.debug.call_args[0][0] == "Missing attribute '%s'. Error: %s"
++ assert x509.log.debug.call_args[0][1] == list(subj.nid.keys())[0]
++ assert isinstance(x509.log.debug.call_args[0][2], TypeError)
+
+ @skipIf(not HAS_M2CRYPTO, "Skipping, M2Crypto is unavailable")
+ def test_get_pem_entry(self):
--
-2.29.2
+2.33.0
++++++ zypperpkg-ignore-retcode-104-for-search-bsc-1176697-.patch ++++++
--- /var/tmp/diff_new_pack.dKsZ0S/_old 2021-09-30 23:43:21.172466460 +0200
+++ /var/tmp/diff_new_pack.dKsZ0S/_new 2021-09-30 23:43:21.176466465 +0200
@@ -1,4 +1,4 @@
-From 10c728215f4b01210753add829f941d746ac3607 Mon Sep 17 00:00:00 2001
+From 071139f7f1456ac6de6543418d848a01bce62c29 Mon Sep 17 00:00:00 2001
From: Alberto Planas <aplanas(a)suse.com>
Date: Mon, 5 Oct 2020 16:24:16 +0200
Subject: [PATCH] zypperpkg: ignore retcode 104 for search()
@@ -6,14 +6,14 @@
---
salt/modules/zypperpkg.py | 28 ++++++---
- tests/unit/modules/test_zypperpkg.py | 87 ++++++++++++++++++++++------
- 2 files changed, 89 insertions(+), 26 deletions(-)
+ tests/unit/modules/test_zypperpkg.py | 93 +++++++++++++++++++++-------
+ 2 files changed, 93 insertions(+), 28 deletions(-)
diff --git a/salt/modules/zypperpkg.py b/salt/modules/zypperpkg.py
-index ffcd1dfa4f..5369a0342e 100644
+index 3ee21ddbe5..1777bec031 100644
--- a/salt/modules/zypperpkg.py
+++ b/salt/modules/zypperpkg.py
-@@ -98,6 +98,8 @@ class _Zypper:
+@@ -92,6 +92,8 @@ class _Zypper:
}
LOCK_EXIT_CODE = 7
@@ -22,7 +22,7 @@
XML_DIRECTIVES = ["-x", "--xmlout"]
# ZYPPER_LOCK is not affected by --root
ZYPPER_LOCK = "/var/run/zypp.pid"
-@@ -128,6 +130,7 @@ class _Zypper:
+@@ -122,6 +124,7 @@ class _Zypper:
self.__no_raise = False
self.__refresh = False
self.__ignore_repo_failure = False
@@ -30,7 +30,7 @@
self.__systemd_scope = False
self.__root = None
-@@ -147,6 +150,9 @@ class _Zypper:
+@@ -141,6 +144,9 @@ class _Zypper:
# Ignore exit code for 106 (repo is not available)
if "no_repo_failure" in kwargs:
self.__ignore_repo_failure = kwargs["no_repo_failure"]
@@ -40,7 +40,7 @@
if "systemd_scope" in kwargs:
self.__systemd_scope = kwargs["systemd_scope"]
if "root" in kwargs:
-@@ -305,6 +311,10 @@ class _Zypper:
+@@ -299,6 +305,10 @@ class _Zypper:
if self.__root:
self.__cmd.extend(["--root", self.__root])
@@ -51,7 +51,7 @@
self.__cmd.extend(args)
kwargs["output_loglevel"] = "trace"
kwargs["python_shell"] = False
-@@ -442,9 +452,11 @@ class Wildcard:
+@@ -436,9 +446,11 @@ class Wildcard:
Get available versions of the package.
:return:
"""
@@ -66,7 +66,7 @@
if not solvables:
raise CommandExecutionError(
"No packages found matching '{}'".format(self.name)
-@@ -1042,7 +1054,7 @@ def list_repo_pkgs(*args, **kwargs):
+@@ -1043,7 +1055,7 @@ def list_repo_pkgs(*args, **kwargs):
root = kwargs.get("root") or None
for node in (
@@ -75,7 +75,7 @@
.xml.call("se", "-s", *targets)
.getElementsByTagName("solvable")
):
-@@ -2381,7 +2393,9 @@ def owner(*paths, **kwargs):
+@@ -2422,7 +2434,9 @@ def owner(*paths, **kwargs):
def _get_visible_patterns(root=None):
"""Get all available patterns in the repo that are visible."""
patterns = {}
@@ -86,7 +86,7 @@
for element in search_patterns.getElementsByTagName("solvable"):
installed = element.getAttribute("status") == "installed"
patterns[element.getAttribute("name")] = {
-@@ -2578,7 +2592,7 @@ def search(criteria, refresh=False, **kwargs):
+@@ -2619,7 +2633,7 @@ def search(criteria, refresh=False, **kwargs):
cmd.append(criteria)
solvables = (
@@ -95,7 +95,7 @@
.nolock.noraise.xml.call(*cmd)
.getElementsByTagName("solvable")
)
-@@ -2830,7 +2844,7 @@ def _get_patches(installed_only=False, root=None):
+@@ -2871,7 +2885,7 @@ def _get_patches(installed_only=False, root=None):
"""
patches = {}
for element in (
@@ -105,10 +105,28 @@
.getElementsByTagName("solvable")
):
diff --git a/tests/unit/modules/test_zypperpkg.py b/tests/unit/modules/test_zypperpkg.py
-index b346ef9ebd..a60b1546c6 100644
+index 919dbb9737..0ba5595d65 100644
--- a/tests/unit/modules/test_zypperpkg.py
+++ b/tests/unit/modules/test_zypperpkg.py
-@@ -27,7 +27,10 @@ class ZyppCallMock:
+@@ -3,6 +3,8 @@
+ """
+
+
++import configparser
++import io
+ import os
+ from xml.dom import minidom
+
+@@ -14,7 +16,7 @@ from salt.exceptions import CommandExecutionError
+ from salt.ext import six
+ from salt.ext.six.moves import configparser
+ from tests.support.mixins import LoaderModuleMockMixin
+-from tests.support.mock import MagicMock, Mock, call, patch
++from tests.support.mock import MagicMock, Mock, call, mock_open, patch
+ from tests.support.unit import TestCase
+
+
+@@ -27,7 +29,10 @@ class ZyppCallMock:
def __call__(self, *args, **kwargs):
# If the call is for a configuration modifier, we return self
@@ -120,7 +138,16 @@
return self
return MagicMock(return_value=self.__return_value)()
-@@ -1782,8 +1785,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
+@@ -1516,7 +1521,7 @@ Repository 'DUMMY' not found by its alias, number, or URI.
+ """
+ repos_cfg = configparser.ConfigParser()
+ for cfg in ["zypper-repo-1.cfg", "zypper-repo-2.cfg"]:
+- repos_cfg.readfp(six.moves.StringIO(get_test_data(cfg)))
++ repos_cfg.readfp(io.StringIO(get_test_data(cfg)))
+
+ for alias in repos_cfg.sections():
+ r_info = zypper._get_repo_info(alias, repos_cfg=repos_cfg)
+@@ -1782,8 +1787,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
<solvable status="installed" name="libzypp" kind="package" edition="16.2.4-19.5" arch="x86_64" repository="(System Packages)"/>
</solvable-list></search-result></stream>
"""
@@ -132,7 +159,7 @@
wcard = zypper.Wildcard(_zpr)
wcard.name, wcard.version = "libzypp", "*"
assert wcard._get_scope_versions(wcard._get_available_versions()) == [
-@@ -1805,8 +1809,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
+@@ -1805,8 +1811,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
</solvable-list></search-result></stream>
"""
@@ -144,7 +171,7 @@
wcard = zypper.Wildcard(_zpr)
wcard.name, wcard.version = "libzypp", "16.2.*-2*"
assert wcard._get_scope_versions(wcard._get_available_versions()) == [
-@@ -1827,8 +1832,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
+@@ -1827,8 +1834,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
</solvable-list></search-result></stream>
"""
@@ -156,7 +183,7 @@
wcard = zypper.Wildcard(_zpr)
wcard.name, wcard.version = "libzypp", "16.2.5*"
assert wcard._get_scope_versions(wcard._get_available_versions()) == [
-@@ -1848,8 +1854,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
+@@ -1848,8 +1856,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
</solvable-list></search-result></stream>
"""
@@ -168,7 +195,7 @@
wcard = zypper.Wildcard(_zpr)
wcard.name, wcard.version = "libzypp", "*.1"
assert wcard._get_scope_versions(wcard._get_available_versions()) == [
-@@ -1870,8 +1877,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
+@@ -1870,8 +1879,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
<solvable status="other-version" name="libzypp" kind="package" edition="17.2.6-27.9.1" arch="x86_64" repository="foo"/>
</solvable-list></search-result></stream>
"""
@@ -180,7 +207,7 @@
assert zypper.Wildcard(_zpr)("libzypp", "16.2.4*") == "16.2.4-19.5"
assert zypper.Wildcard(_zpr)("libzypp", "16.2*") == "16.2.5-25.1"
assert zypper.Wildcard(_zpr)("libzypp", "*6-*") == "17.2.6-27.9.1"
-@@ -1890,8 +1898,10 @@ Repository 'DUMMY' not found by its alias, number, or URI.
+@@ -1890,8 +1900,10 @@ Repository 'DUMMY' not found by its alias, number, or URI.
<solvable status="other-version" name="libzypp" kind="package" edition="17.2.6-27.9.1" arch="x86_64" repository="foo"/>
</solvable-list></search-result></stream>
"""
@@ -193,7 +220,7 @@
assert zypper.Wildcard(_zpr)("libzypp", None) is None
def test_wildcard_to_query_typecheck(self):
-@@ -1907,8 +1917,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
+@@ -1907,8 +1919,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
<solvable status="other-version" name="libzypp" kind="package" edition="17.2.6-27.9.1" arch="x86_64" repository="foo"/>
</solvable-list></search-result></stream>
"""
@@ -205,7 +232,7 @@
assert isinstance(zypper.Wildcard(_zpr)("libzypp", "*.1"), str)
def test_wildcard_to_query_condition_preservation(self):
-@@ -1924,8 +1935,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
+@@ -1924,8 +1937,9 @@ Repository 'DUMMY' not found by its alias, number, or URI.
<solvable status="other-version" name="libzypp" kind="package" edition="17.2.6-27.9.1" arch="x86_64" repository="foo"/>
</solvable-list></search-result></stream>
"""
@@ -217,7 +244,7 @@
for op in zypper.Wildcard.Z_OP:
assert zypper.Wildcard(_zpr)(
-@@ -1951,8 +1963,10 @@ Repository 'DUMMY' not found by its alias, number, or URI.
+@@ -1951,8 +1965,10 @@ Repository 'DUMMY' not found by its alias, number, or URI.
<solvable status="other-version" name="libzypp" kind="package" edition="17.2.6-27.9.1" arch="x86_64" repository="foo"/>
</solvable-list></search-result></stream>
"""
@@ -230,10 +257,10 @@
with self.assertRaises(CommandExecutionError):
for op in [">>", "==", "<<", "+"]:
zypper.Wildcard(_zpr)("libzypp", "{}*.1".format(op))
-@@ -2030,3 +2044,38 @@ pattern() = package-c"""
- with patch.dict(zypper.__context__, context):
- zypper._clean_cache()
- self.assertEqual(zypper.__context__, {"pkg.other_data": None})
+@@ -2044,3 +2060,38 @@ pattern() = package-c"""
+ with patch("salt.modules.zypperpkg.__zypper__", zypper_mock):
+ assert zypper.services_need_restart() == expected
+ zypper_mock(root=None).nolock.call.assert_called_with("ps", "-sss")
+
+ def test_search(self):
+ """Test zypperpkg.search()"""
@@ -270,6 +297,6 @@
+ env={"ZYPP_READONLY_HACK": "1"},
+ )
--
-2.29.2
+2.33.0
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package openucx for openSUSE:Factory checked in at 2021-09-30 23:42:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openucx (Old)
and /work/SRC/openSUSE:Factory/.openucx.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openucx"
Thu Sep 30 23:42:59 2021 rev:20 rq:921703 version:1.11.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/openucx/openucx.changes 2021-03-02 12:25:29.643318270 +0100
+++ /work/SRC/openSUSE:Factory/.openucx.new.2443/openucx.changes 2021-09-30 23:43:13.068457182 +0200
@@ -1,0 +2,5 @@
+Thu Sep 23 07:35:57 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin(a)suse.com>
+
+- Update to v1.11.1 (jsc#SLE-19260)
+
+-------------------------------------------------------------------
@@ -4,0 +10,62 @@
+ - Core:
+ - Added support for UCX monitoring using virtual file system (VFS)/FUSE
+ - Added support for applications with static CUDA runtime linking
+ - Added support for a configuration file
+ - Updated clang format configuration
+ - UCP
+ - Added rendezvous API for active messages
+ - Added user-defined name to context, worker, and endpoint objects
+ - Added flag to silence request leak check
+ - Added API for endpoint performance evaluation
+ - Added API - ucp_request_query
+ - Added API - ucp_lib_query
+ - Added bandwidth optimizations for new protocols multi-lane
+ - Added support for multi-rail over lanes with BW ratio >= 1/4
+ - Added support for tracking outstanding requests and aborting those in case of connection failure
+ - Refactored keep-alive protocol
+ - Added device id to wireup protocol
+ - Added support up to 128 transport layer resources in UCP context
+ - Added support CUDA memory allocations with ucp_mem_map
+ - Increased UCP_WORKER_MAX_EP_CONFIG to 64
+ - Adjusted memory type zcopy threshold when UCX_ZCOPY_THRESH set
+ - Refactored wireup protocols, rendezvous, get, zcopy protocols
+ - Added put zcopy multi-rail
+ - Improved logging for new protocols
+ - Added system topology information
+ - Added new protocols for eager offload protocols
+ - UCT
+ - Extended connection establishment API
+ - Added active message AM alignment in iface params
+ - Added active message short IOV API.
+ - Added support for interface query by operation and memory type
+ - Added API to get allocation base address and length
+ - Added md_dereg_v2 API
+ - UCS
+ - Added log filter by source file name.
+ - Added checking for last element in fraglist queue
+ - Added a method to get IP address from sockaddr.
+ - Added memory usage limits to registration cache
+ - RDMA CORE (IB, ROCE, etc.)
+ - Added report of QP info in case of completion with error
+ - Refactored of FC send operations
+ - Added support for DevX unique QPN allocation
+ - Optimized endpoint lookup for DCI
+ - Added support for RDMA sub-function (SF)
+ - Added support for DCI via DEVX
+ - Added DCI pool per LAG port
+ - Added support for RoCE IP reachability check using a subnet mask
+ - Added active message short IOV for UD/DC/RC mlx, UD/RC verbs
+ - Added endpoint keep alive check for UD
+ - Suppressed warning if device can't be opened
+ - Added support for multiple flush cancel without completion
+ - Added ignore for devices with invalid GID
+ - Added support for SRQ linked list reordering
+ - Added flush by flow control on old devices
+ - Added support for configurable rdma_resolve_addr/route timeout
+ - Shared memory
+ - Added active message short IOV support for posix, sysv, and self transports
+ - TCP
+ - Added support for peer failure in case of CONNECT_TO_EP
+ - Added support for active message short IOV
+ - See NEWS for a complete changelog and bug fixes
+- Refresh openucx-s390x-support against latest sources
Old:
----
ucx-1.9.0.tar.gz
New:
----
ucx-1.11.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openucx.spec ++++++
--- /var/tmp/diff_new_pack.A8WFGB/_old 2021-09-30 23:43:13.660457859 +0200
+++ /var/tmp/diff_new_pack.A8WFGB/_new 2021-09-30 23:43:13.664457864 +0200
@@ -17,7 +17,7 @@
Name: openucx
-Version: 1.9.0
+Version: 1.11.1
Release: 0
Summary: Communication layer for Message Passing (MPI)
License: BSD-3-Clause
@@ -174,11 +174,15 @@
rm -fv "%buildroot/%_libdir"/ucx/*.la
# Rename example dir for consistency with the package name
mv %buildroot/%_datadir/ucx %buildroot/%_datadir/openucx
+# io_demo should not be in %{bindir} and more likely in %{libexec}
+mkdir -p %buildroot/%_libexecdir/%{name}/
+mv %buildroot/%_bindir/io_demo %buildroot/%_libexecdir/%{name}/
%files tools
%defattr(-,root,root)
%_bindir/ucx_*
%_datadir/%{name}/
+%_libexecdir/%{name}
%_libdir/pkgconfig/ucx.pc
%doc LICENSE NEWS
++++++ openucx-s390x-support.patch ++++++
--- /var/tmp/diff_new_pack.A8WFGB/_old 2021-09-30 23:43:13.692457896 +0200
+++ /var/tmp/diff_new_pack.A8WFGB/_new 2021-09-30 23:43:13.696457901 +0200
@@ -1,4 +1,4 @@
-commit b47dad27703f0b59072f5a8d8fba99c1d173f8f0
+commit 71d28736870f46080b8187bf2ba64920c87dc7e4
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin(a)suse.com>
Date: Thu Aug 9 07:41:24 2018 +0200
@@ -7,10 +7,10 @@
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin(a)suse.com>
diff --git config/m4/ucm.m4 config/m4/ucm.m4
-index 9c7c820d9fff..8297fc7e6ec2 100644
+index 1e229edc51f2..3f74fca02976 100644
--- config/m4/ucm.m4
+++ config/m4/ucm.m4
-@@ -86,9 +86,20 @@ AC_CHECK_DECLS([SYS_ipc],
+@@ -73,9 +73,20 @@ AC_CHECK_DECLS([SYS_ipc],
[ipc_hooks_happy=no],
[#include <sys/syscall.h>])
@@ -33,22 +33,24 @@
AS_IF([test "x$bistro_hooks_happy" = "xyes"],
[AC_DEFINE([UCM_BISTRO_HOOKS], [1], [Enable BISTRO hooks])],
diff --git src/tools/info/sys_info.c src/tools/info/sys_info.c
-index 88d317670462..04d2c223b970 100644
+index 7c355a264c2b..52efadec096c 100644
--- src/tools/info/sys_info.c
+++ src/tools/info/sys_info.c
-@@ -38,6 +38,7 @@ static const char* cpu_vendor_names[] = {
- [UCS_CPU_VENDOR_AMD] = "AMD",
+@@ -44,7 +44,8 @@ static const char* cpu_vendor_names[] = {
[UCS_CPU_VENDOR_GENERIC_ARM] = "Generic ARM",
[UCS_CPU_VENDOR_GENERIC_PPC] = "Generic PPC",
-+ [UCS_CPU_VENDOR_GENERIC_IBM] = "Generic IBM",
- [UCS_CPU_VENDOR_FUJITSU_ARM] = "Fujitsu ARM"
+ [UCS_CPU_VENDOR_FUJITSU_ARM] = "Fujitsu ARM",
+- [UCS_CPU_VENDOR_ZHAOXIN] = "Zhaoxin"
++ [UCS_CPU_VENDOR_ZHAOXIN] = "Zhaoxin",
++ [UCS_CPU_VENDOR_GENERIC_IBM] = "Generic IBM"
};
+ static double measure_memcpy_bandwidth(size_t size)
diff --git src/ucm/Makefile.am src/ucm/Makefile.am
-index e53a30a46916..21bce848045d 100644
+index 55784d0c31f4..a6003eda0333 100644
--- src/ucm/Makefile.am
+++ src/ucm/Makefile.am
-@@ -30,7 +30,8 @@ noinst_HEADERS = \
+@@ -31,7 +31,8 @@ noinst_HEADERS = \
bistro/bistro.h \
bistro/bistro_x86_64.h \
bistro/bistro_aarch64.h \
@@ -59,7 +61,7 @@
libucm_la_SOURCES = \
event/event.c \
diff --git src/ucm/bistro/bistro.h src/ucm/bistro/bistro.h
-index 16e988700c35..b4c2762fb5b2 100644
+index 101000455e66..0ae947429796 100644
--- src/ucm/bistro/bistro.h
+++ src/ucm/bistro/bistro.h
@@ -20,6 +20,8 @@ typedef struct ucm_bistro_restore_point ucm_bistro_restore_point_t;
@@ -73,10 +75,10 @@
#endif
diff --git src/ucm/bistro/bistro_s390x.h src/ucm/bistro/bistro_s390x.h
new file mode 100644
-index 000000000000..334c0474e8b6
+index 000000000000..c0f427f4984a
--- /dev/null
+++ src/ucm/bistro/bistro_s390x.h
-@@ -0,0 +1,13 @@
+@@ -0,0 +1,18 @@
+#ifndef UCM_BISTRO_BISTRO_S390X_H_
+#define UCM_BISTRO_BISTRO_S390X_H_
+
@@ -88,46 +90,41 @@
+#define UCM_BISTRO_PROLOGUE
+#define UCM_BISTRO_EPILOGUE
+
++static inline ucs_status_t ucm_bistro_patch(void *func_ptr, void *hook, const char *symbol,
++ void **orig_func_p,
++ ucm_bistro_restore_point_t **rp){
++ return UCS_ERR_UNSUPPORTED;
++}
+
+#endif
-diff --git src/ucm/mmap/install.c src/ucm/mmap/install.c
-index 6b46baaeecfa..522fd6eaa89f 100644
---- src/ucm/mmap/install.c
-+++ src/ucm/mmap/install.c
-@@ -331,7 +331,11 @@ static ucs_status_t ucs_mmap_install_reloc(int events)
- status = ucm_reloc_modify(&entry->patch);
- } else {
- ucs_assert(ucm_mmap_hook_mode() == UCM_MMAP_HOOK_BISTRO);
-+#if UCM_BISTRO_HOOKS
- status = ucm_bistro_patch(entry->patch.symbol, entry->patch.value, NULL);
-+#else
-+ status = UCS_ERR_UNSUPPORTED;
-+#endif
- }
- if (status != UCS_OK) {
- ucm_warn("failed to install %s hook for '%s'",
diff --git src/ucs/Makefile.am src/ucs/Makefile.am
-index b612ddeb54ff..6d01521b697b 100644
+index 8cc77e87da3f..2fbb53188a58 100644
--- src/ucs/Makefile.am
+++ src/ucs/Makefile.am
-@@ -64,6 +64,7 @@ nobase_dist_libucs_la_HEADERS = \
- arch/x86_64/global_opts.h \
+@@ -21,6 +21,7 @@ libucs_la_LIBADD = $(LIBM) $(top_builddir)/src/ucm/libucm.la
+ nobase_dist_libucs_la_HEADERS = \
+ arch/aarch64/bitops.h \
+ arch/ppc64/bitops.h \
++ arch/s390x/bitops.h \
+ arch/x86_64/bitops.h \
+ arch/bitops.h \
+ algorithm/crc.h \
+@@ -77,12 +78,14 @@ nobase_dist_libucs_la_HEADERS = \
arch/aarch64/global_opts.h \
+ arch/generic/atomic.h \
arch/ppc64/global_opts.h \
+ arch/s390x/global_opts.h \
arch/global_opts.h
noinst_HEADERS = \
-@@ -71,6 +72,8 @@ noinst_HEADERS = \
- arch/generic/atomic.h \
+ arch/aarch64/cpu.h \
arch/generic/cpu.h \
arch/ppc64/cpu.h \
-+ arch/s390x/bitops.h \
+ arch/s390x/cpu.h \
- arch/x86_64/atomic.h \
arch/x86_64/cpu.h \
- arch/atomic.h \
-@@ -112,6 +115,7 @@ libucs_la_SOURCES = \
+ arch/cpu.h \
+ datastruct/arbiter.h \
+@@ -127,6 +130,7 @@ libucs_la_SOURCES = \
algorithm/qsort_r.c \
arch/aarch64/cpu.c \
arch/aarch64/global_opts.c \
@@ -136,7 +133,7 @@
arch/ppc64/global_opts.c \
arch/x86_64/cpu.c \
diff --git src/ucs/arch/atomic.h src/ucs/arch/atomic.h
-index 99e53ca5d0f7..dfa83b757bb0 100644
+index 6a8551f592e1..e3a9f4641383 100644
--- src/ucs/arch/atomic.h
+++ src/ucs/arch/atomic.h
@@ -15,6 +15,8 @@
@@ -149,10 +146,10 @@
# error "Unsupported architecture"
#endif
diff --git src/ucs/arch/bitops.h src/ucs/arch/bitops.h
-index 10a86b53ca42..80084eea6260 100644
+index a890cd255295..badc12419b5b 100644
--- src/ucs/arch/bitops.h
+++ src/ucs/arch/bitops.h
-@@ -18,6 +18,8 @@ BEGIN_C_DECLS
+@@ -20,6 +20,8 @@ BEGIN_C_DECLS
# include "ppc64/bitops.h"
#elif defined(__aarch64__)
# include "aarch64/bitops.h"
@@ -162,10 +159,10 @@
# error "Unsupported architecture"
#endif
diff --git src/ucs/arch/cpu.c src/ucs/arch/cpu.c
-index 6d9ebbafeaed..5cda2179efca 100644
+index 210a49c8e717..4018392ebed3 100644
--- src/ucs/arch/cpu.c
+++ src/ucs/arch/cpu.c
-@@ -60,6 +60,10 @@ const ucs_cpu_builtin_memcpy_t ucs_cpu_builtin_memcpy[UCS_CPU_VENDOR_LAST] = {
+@@ -61,6 +61,10 @@ const ucs_cpu_builtin_memcpy_t ucs_cpu_builtin_memcpy[UCS_CPU_VENDOR_LAST] = {
.min = UCS_MEMUNITS_INF,
.max = UCS_MEMUNITS_INF
},
@@ -176,7 +173,7 @@
[UCS_CPU_VENDOR_FUJITSU_ARM] = {
.min = UCS_MEMUNITS_INF,
.max = UCS_MEMUNITS_INF
-@@ -72,6 +76,7 @@ const size_t ucs_cpu_est_bcopy_bw[UCS_CPU_VENDOR_LAST] = {
+@@ -77,6 +81,7 @@ const size_t ucs_cpu_est_bcopy_bw[UCS_CPU_VENDOR_LAST] = {
[UCS_CPU_VENDOR_AMD] = 5008 * UCS_MBYTE,
[UCS_CPU_VENDOR_GENERIC_ARM] = 5800 * UCS_MBYTE,
[UCS_CPU_VENDOR_GENERIC_PPC] = 5800 * UCS_MBYTE,
@@ -185,18 +182,18 @@
};
diff --git src/ucs/arch/cpu.h src/ucs/arch/cpu.h
-index cb317a8db3a4..5174eeb7e1db 100644
+index e06f6b95ebb1..15f3198976a9 100644
--- src/ucs/arch/cpu.h
+++ src/ucs/arch/cpu.h
-@@ -58,6 +58,7 @@ typedef enum ucs_cpu_vendor {
+@@ -62,6 +62,7 @@ typedef enum ucs_cpu_vendor {
UCS_CPU_VENDOR_AMD,
UCS_CPU_VENDOR_GENERIC_ARM,
UCS_CPU_VENDOR_GENERIC_PPC,
+ UCS_CPU_VENDOR_GENERIC_IBM,
UCS_CPU_VENDOR_FUJITSU_ARM,
+ UCS_CPU_VENDOR_ZHAOXIN,
UCS_CPU_VENDOR_LAST
- } ucs_cpu_vendor_t;
-@@ -92,6 +93,8 @@ typedef struct ucs_cpu_builtin_memcpy {
+@@ -97,6 +98,8 @@ typedef struct ucs_cpu_builtin_memcpy {
# include "ppc64/cpu.h"
#elif defined(__aarch64__)
# include "aarch64/cpu.h"
@@ -408,10 +405,10 @@
+#endif
+
diff --git src/ucs/sys/sys.c src/ucs/sys/sys.c
-index 62e555b409d1..8adc26241781 100644
+index 59836aaa51c2..3975db7f6be3 100644
--- src/ucs/sys/sys.c
+++ src/ucs/sys/sys.c
-@@ -1134,8 +1134,19 @@ void *ucs_sys_realloc(void *old_ptr, size_t old_length, size_t new_length)
+@@ -1223,8 +1223,19 @@ void *ucs_sys_realloc(void *old_ptr, size_t old_length, size_t new_length)
if (old_ptr == NULL) {
/* Note: Must pass the 0 offset as "long", otherwise it will be
* partially undefined when converted to syscall arguments */
++++++ ucx-1.9.0.tar.gz -> ucx-1.11.1.tar.gz ++++++
++++ 145018 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libmtp for openSUSE:Factory checked in at 2021-09-30 23:42:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libmtp (Old)
and /work/SRC/openSUSE:Factory/.libmtp.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libmtp"
Thu Sep 30 23:42:58 2021 rev:82 rq:921677 version:1.1.19
Changes:
--------
--- /work/SRC/openSUSE:Factory/libmtp/libmtp.changes 2020-10-14 15:37:11.730320571 +0200
+++ /work/SRC/openSUSE:Factory/.libmtp.new.2443/libmtp.changes 2021-09-30 23:43:12.172456155 +0200
@@ -1,0 +2,8 @@
+Sat Sep 25 14:29:46 UTC 2021 - Marcus Meissner <meissner(a)suse.com>
+
+- updated to 1.1.19 release
+ - Lots of USB ids added, especially Garmin devices
+ - use a local libusb context, not the global one
+ - various bugfixes
+
+-------------------------------------------------------------------
Old:
----
libmtp-1.1.18.tar.gz
libmtp-1.1.18.tar.gz.asc
New:
----
libmtp-1.1.19.tar.gz
libmtp-1.1.19.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libmtp.spec ++++++
--- /var/tmp/diff_new_pack.hK8wz2/_old 2021-09-30 23:43:12.716456779 +0200
+++ /var/tmp/diff_new_pack.hK8wz2/_new 2021-09-30 23:43:12.720456783 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libmtp
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
%{!?_udevrulesdir: %global _udevrulesdir %(pkg-config --variable=udevdir udev)/rules.d }
%{!?_udevdir: %global _udevdir %(pkg-config --variable=udevdir udev) }
Name: libmtp
-Version: 1.1.18
+Version: 1.1.19
Release: 0
Summary: Commandline utilities for access to MTP Players
License: LGPL-2.1-or-later
++++++ libmtp-1.1.18.tar.gz -> libmtp-1.1.19.tar.gz ++++++
++++ 7495 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-phply for openSUSE:Factory checked in at 2021-09-30 23:42:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-phply (Old)
and /work/SRC/openSUSE:Factory/.python-phply.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-phply"
Thu Sep 30 23:42:58 2021 rev:4 rq:921553 version:1.2.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-phply/python-phply.changes 2020-05-28 09:08:14.443864790 +0200
+++ /work/SRC/openSUSE:Factory/.python-phply.new.2443/python-phply.changes 2021-09-30 23:43:10.628454387 +0200
@@ -1,0 +2,7 @@
+Mon Sep 27 04:27:24 UTC 2021 - Steve Kowalik <steven.kowalik(a)suse.com>
+
+- Add patch remove-nose.patch
+ * Stop using nose.tools.
+- Use pytest rather than setup.py test
+
+-------------------------------------------------------------------
New:
----
remove-nose.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-phply.spec ++++++
--- /var/tmp/diff_new_pack.GgwnlV/_old 2021-09-30 23:43:11.932455880 +0200
+++ /var/tmp/diff_new_pack.GgwnlV/_new 2021-09-30 23:43:11.932455880 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-phply
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -25,14 +25,15 @@
Group: Development/Languages/Python
URL: https://github.com/viraptor/phply
Source: https://files.pythonhosted.org/packages/source/p/phply/phply-%{version}.tar…
-BuildRequires: %{python_module nose}
+Patch0: remove-nose.patch
BuildRequires: %{python_module ply}
+BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-ply
Requires(post): update-alternatives
-Requires(postun): update-alternatives
+Requires(postun):update-alternatives
BuildArch: noarch
%python_subpackages
@@ -41,6 +42,7 @@
%prep
%setup -q -n phply-%{version}
+%autopatch -p1
%build
%python_build
@@ -53,7 +55,7 @@
%python_expand rm -rf %{buildroot}%{$python_sitelib}/tests
%check
-%python_exec setup.py test
+%pytest
%post
%python_install_alternative phpparse
++++++ remove-nose.patch ++++++
Index: phply-1.2.5/tests/test_filtered_lexer.py
===================================================================
--- phply-1.2.5.orig/tests/test_filtered_lexer.py
+++ phply-1.2.5/tests/test_filtered_lexer.py
@@ -2,7 +2,6 @@ from __future__ import print_function
from phply import phplex
-import nose.tools
import pprint
def eq_tokens(input, expected, ignore=('WHITESPACE', 'OPEN_TAG', 'CLOSE_TAG')):
@@ -23,7 +22,7 @@ def eq_tokens(input, expected, ignore=('
print('Token by token:')
for out, exp in zip(output, expected):
print('\tgot:', out, '\texpected:', exp)
- nose.tools.eq_(out, exp)
+ assert out == exp
assert len(output) == len(expected), \
'output length was %d, expected %s' % (len(output), len(expected))
Index: phply-1.2.5/tests/test_lexer.py
===================================================================
--- phply-1.2.5.orig/tests/test_lexer.py
+++ phply-1.2.5/tests/test_lexer.py
@@ -2,7 +2,6 @@ from __future__ import print_function
from phply import phplex
-import nose.tools
import pprint
def eq_tokens(input, expected, ignore=('WHITESPACE', 'OPEN_TAG', 'CLOSE_TAG')):
@@ -23,7 +22,7 @@ def eq_tokens(input, expected, ignore=('
print('Token by token:')
for out, exp in zip(output, expected):
print('\tgot:', out, '\texpected:', exp)
- nose.tools.eq_(out, exp)
+ assert out == exp
assert len(output) == len(expected), \
'output length was %d, expected %s' % (len(output), len(expected))
Index: phply-1.2.5/tests/test_parser.py
===================================================================
--- phply-1.2.5.orig/tests/test_parser.py
+++ phply-1.2.5/tests/test_parser.py
@@ -4,7 +4,6 @@ from phply import phplex
from phply.phpparse import make_parser
from phply.phpast import *
-import nose.tools
import pprint
import sys
@@ -23,12 +22,12 @@ def eq_ast(input, expected, filename=Non
print('Node by node:')
for out, exp in zip(output, expected):
print('\tgot:', out, '\texpected:', exp)
- nose.tools.eq_(out, exp)
+ assert out == exp
# compare line numbers, but only for top elements
if with_top_lineno:
print('\tgot line:', out.lineno, '\texpected:', exp.lineno)
- nose.tools.eq_(out.lineno, exp.lineno)
+ assert out.lineno == exp.lineno
assert len(output) == len(expected), \
'output length was %d, expected %s' % (len(output), len(expected))
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-jmespath for openSUSE:Factory checked in at 2021-09-30 23:42:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jmespath (Old)
and /work/SRC/openSUSE:Factory/.python-jmespath.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jmespath"
Thu Sep 30 23:42:55 2021 rev:19 rq:921548 version:0.10.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jmespath/python-jmespath.changes 2021-06-13 23:05:37.523612400 +0200
+++ /work/SRC/openSUSE:Factory/.python-jmespath.new.2443/python-jmespath.changes 2021-09-30 23:43:10.060453737 +0200
@@ -1,0 +2,6 @@
+Mon Sep 27 03:03:07 UTC 2021 - Steve Kowalik <steven.kowalik(a)suse.com>
+
+- Add patch remove-nose.patch:
+ * Remove use of nose in the tests.
+
+-------------------------------------------------------------------
New:
----
remove-nose.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jmespath.spec ++++++
--- /var/tmp/diff_new_pack.Jxjng9/_old 2021-09-30 23:43:10.484454222 +0200
+++ /var/tmp/diff_new_pack.Jxjng9/_new 2021-09-30 23:43:10.488454228 +0200
@@ -22,12 +22,11 @@
Release: 0
Summary: Python module for declarative JSON document element extraction
License: MIT
-Group: Development/Languages/Python
URL: https://github.com/jmespath/jmespath.py
Source: https://github.com/jmespath/jmespath.py/archive/refs/tags/%{version}.tar.gz…
+Patch0: remove-nose.patch
# Testing
BuildRequires: %{python_module hypothesis}
-BuildRequires: %{python_module nose}
BuildRequires: %{python_module ply >= 3.4}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module simplejson}
@@ -73,6 +72,7 @@
%prep
%setup -q -n jmespath.py-%{version}
+%autopatch -p1
%build
%python_build
++++++ remove-nose.patch ++++++
Index: jmespath.py-0.10.0/extra/test_hypothesis.py
===================================================================
--- jmespath.py-0.10.0.orig/extra/test_hypothesis.py
+++ jmespath.py-0.10.0/extra/test_hypothesis.py
@@ -6,7 +6,6 @@ import os
import sys
import numbers
-from nose.plugins.skip import SkipTest
from hypothesis import given, settings, assume, HealthCheck
import hypothesis.strategies as st
Index: jmespath.py-0.10.0/tests/test_compliance.py
===================================================================
--- jmespath.py-0.10.0.orig/tests/test_compliance.py
+++ jmespath.py-0.10.0/tests/test_compliance.py
@@ -3,8 +3,6 @@ from pprint import pformat
from tests import OrderedDict
from tests import json
-from nose.tools import assert_equal
-
from jmespath.visitor import Options
@@ -80,7 +78,7 @@ def _test_expression(given, expression,
actual_repr, pformat(parsed.parsed),
json.dumps(given, indent=4)))
error_msg = error_msg.replace(r'\n', '\n')
- assert_equal(actual, expected, error_msg)
+ assert actual == expected, error_msg
def _test_error_expression(given, expression, error, filename):
1
0