Hello community,
here is the log from the commit of package libzypp for openSUSE:Factory checked in at 2018-12-19 13:48:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libzypp (Old)
and /work/SRC/openSUSE:Factory/.libzypp.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libzypp"
Wed Dec 19 13:48:46 2018 rev:409 rq:659302 version:17.10.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/libzypp/libzypp.changes 2018-12-03 10:09:00.551785474 +0100
+++ /work/SRC/openSUSE:Factory/.libzypp.new.28833/libzypp.changes 2018-12-19 13:49:04.539313224 +0100
@@ -1,0 +2,17 @@
+Tue Dec 18 14:01:19 CET 2018 - ma@suse.de
+
+- Simplify complex locks so zypper can display them (bsc#1112911)
+- version 17.10.3 (9)
+
+-------------------------------------------------------------------
+Mon Dec 10 16:57:34 CET 2018 - ma@suse.de
+
+- commit: set `SYSTEMD_OFFLINE=1` during chrooted commits (bsc#1118758)
+- no-recommends: Nevertheless consider resolver namespaces (hardware,
+ language,..supporting packages) (FATE#325513)
+- BuildRequires: libsolv-devel >= 0.7.2
+ (SOLVER_FLAG_ONLY_NAMESPACE_RECOMMENDED)
+- Remove world-readable bit from /var/log/zypp (bsc#1099019)
+- version 17.10.2 (9)
+
+-------------------------------------------------------------------
Old:
----
libzypp-17.10.1.tar.bz2
New:
----
libzypp-17.10.3.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libzypp.spec ++++++
--- /var/tmp/diff_new_pack.toRVeL/_old 2018-12-19 13:49:05.467311935 +0100
+++ /var/tmp/diff_new_pack.toRVeL/_new 2018-12-19 13:49:05.467311935 +0100
@@ -17,7 +17,7 @@
Name: libzypp
-Version: 17.10.1
+Version: 17.10.3
Release: 0
Url: https://github.com/openSUSE/libzypp
Summary: Library for package, patch, pattern and product management
@@ -75,7 +75,7 @@
BuildRequires: pkg-config
%endif
-BuildRequires: libsolv-devel >= 0.7.1
+BuildRequires: libsolv-devel >= 0.7.2
%if 0%{?suse_version} >= 1100
BuildRequires: libsolv-tools
%requires_eq libsolv-tools
@@ -363,7 +363,7 @@
%config(noreplace) %{_sysconfdir}/zypp/systemCheck
%config(noreplace) %{_sysconfdir}/logrotate.d/zypp-history.lr
%dir %{_var}/lib/zypp
-%dir %{_var}/log/zypp
+%dir %attr(750,root,root) %{_var}/log/zypp
%dir %{_var}/cache/zypp
%{_prefix}/lib/zypp
%{_datadir}/zypp
++++++ libzypp-17.10.1.tar.bz2 -> libzypp-17.10.3.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/VERSION.cmake new/libzypp-17.10.3/VERSION.cmake
--- old/libzypp-17.10.1/VERSION.cmake 2018-11-28 14:46:29.000000000 +0100
+++ new/libzypp-17.10.3/VERSION.cmake 2018-12-18 14:02:11.000000000 +0100
@@ -61,8 +61,8 @@
SET(LIBZYPP_MAJOR "17")
SET(LIBZYPP_COMPATMINOR "9")
SET(LIBZYPP_MINOR "10")
-SET(LIBZYPP_PATCH "1")
+SET(LIBZYPP_PATCH "3")
#
-# LAST RELEASED: 17.10.1 (9)
+# LAST RELEASED: 17.10.3 (9)
# (The number in parenthesis is LIBZYPP_COMPATMINOR)
#=======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/libzypp.spec.cmake new/libzypp-17.10.3/libzypp.spec.cmake
--- old/libzypp-17.10.1/libzypp.spec.cmake 2018-11-20 12:39:44.000000000 +0100
+++ new/libzypp-17.10.3/libzypp.spec.cmake 2018-12-10 16:06:58.000000000 +0100
@@ -75,7 +75,7 @@
BuildRequires: pkg-config
%endif
-BuildRequires: libsolv-devel >= 0.7.1
+BuildRequires: libsolv-devel >= 0.7.2
%if 0%{?suse_version} >= 1100
BuildRequires: libsolv-tools
%requires_eq libsolv-tools
@@ -363,7 +363,7 @@
%config(noreplace) %{_sysconfdir}/zypp/systemCheck
%config(noreplace) %{_sysconfdir}/logrotate.d/zypp-history.lr
%dir %{_var}/lib/zypp
-%dir %{_var}/log/zypp
+%dir %attr(750,root,root) %{_var}/log/zypp
%dir %{_var}/cache/zypp
%{_prefix}/lib/zypp
%{_datadir}/zypp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/package/libzypp.changes new/libzypp-17.10.3/package/libzypp.changes
--- old/libzypp-17.10.1/package/libzypp.changes 2018-11-28 14:46:29.000000000 +0100
+++ new/libzypp-17.10.3/package/libzypp.changes 2018-12-18 14:02:11.000000000 +0100
@@ -1,4 +1,21 @@
-------------------------------------------------------------------
+Tue Dec 18 14:01:19 CET 2018 - ma@suse.de
+
+- Simplify complex locks so zypper can display them (bsc#1112911)
+- version 17.10.3 (9)
+
+-------------------------------------------------------------------
+Mon Dec 10 16:57:34 CET 2018 - ma@suse.de
+
+- commit: set `SYSTEMD_OFFLINE=1` during chrooted commits (bsc#1118758)
+- no-recommends: Nevertheless consider resolver namespaces (hardware,
+ language,..supporting packages) (FATE#325513)
+- BuildRequires: libsolv-devel >= 0.7.2
+ (SOLVER_FLAG_ONLY_NAMESPACE_RECOMMENDED)
+- Remove world-readable bit from /var/log/zypp (bsc#1099019)
+- version 17.10.2 (9)
+
+-------------------------------------------------------------------
Wed Nov 28 14:40:26 CET 2018 - ma@suse.de
- Adapt to changes in upcoming Boost 1.69.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/tests/data/TCNamespaceRecommends/solver-system.xml new/libzypp-17.10.3/tests/data/TCNamespaceRecommends/solver-system.xml
--- old/libzypp-17.10.1/tests/data/TCNamespaceRecommends/solver-system.xml 1970-01-01 01:00:00.000000000 +0100
+++ new/libzypp-17.10.3/tests/data/TCNamespaceRecommends/solver-system.xml 2018-12-10 16:06:58.000000000 +0100
@@ -0,0 +1,45 @@
+<channel><subchannel>
+
+<package>
+ <name>aspell</name>
+ <history>
+ <update>
+ <arch>x86_64</arch>
+ <version>0</version><release>0</release>
+ </update>
+ </history>
+ <recommends>
+ <dep name='aspell-en' />
+ <dep name='recommended-pkg' />
+ </recommends>
+</package>
+
+<package>
+ <name>aspell-en</name>
+ <history>
+ <update>
+ <arch>x86_64</arch>
+ <version>0</version><release>0</release>
+ </update>
+ </history>
+ <provides>
+ <dep name='locale(aspell:en)' />
+ </provides>
+ <supplements>
+ <!--- ignoring '(aspell and namespace:language(en))' -->
+ </supplements>
+</package>
+
+<package>
+ <name>glibc</name>
+ <history>
+ <update>
+ <arch>x86_64</arch>
+ <version>0</version><release>0</release>
+ </update>
+ </history>
+ <provides>
+ <dep name='glibc' op='==' version='0' release='0' />
+ </provides>
+</package>
+</subchannel></channel>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/tests/data/TCNamespaceRecommends/solver-test.xml new/libzypp-17.10.3/tests/data/TCNamespaceRecommends/solver-test.xml
--- old/libzypp-17.10.1/tests/data/TCNamespaceRecommends/solver-test.xml 1970-01-01 01:00:00.000000000 +0100
+++ new/libzypp-17.10.3/tests/data/TCNamespaceRecommends/solver-test.xml 2018-12-10 16:06:58.000000000 +0100
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<test>
+<setup arch="x86_64">
+ <system file="solver-system.xml"/>
+ <!--
+ - alias : update
+ - url : http://foo.org/distribution/update
+ -->
+ <channel file="update.xml" name="update"/>
+ <locale name="en_US" />
+ <locale name="de" />
+</setup>
+</test>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/tests/data/TCNamespaceRecommends/update.xml new/libzypp-17.10.3/tests/data/TCNamespaceRecommends/update.xml
--- old/libzypp-17.10.1/tests/data/TCNamespaceRecommends/update.xml 1970-01-01 01:00:00.000000000 +0100
+++ new/libzypp-17.10.3/tests/data/TCNamespaceRecommends/update.xml 2018-12-10 16:06:58.000000000 +0100
@@ -0,0 +1,75 @@
+<channel><subchannel>
+
+<package>
+ <name>aspell</name>
+ <history>
+ <update>
+ <arch>x86_64</arch>
+ <version>1</version><release>1</release>
+ </update>
+ </history>
+ <recommends>
+ <dep name='aspell-en' />
+ <dep name='recommended-pkg' />
+ </recommends>
+</package>
+
+<package>
+ <name>aspell-en</name>
+ <history>
+ <update>
+ <arch>x86_64</arch>
+ <version>1</version><release>1</release>
+ </update>
+ </history>
+ <provides>
+ <dep name='locale(aspell:en)' />
+ </provides>
+ <supplements>
+ <!--- ignoring '(aspell and namespace:language(en))' -->
+ </supplements>
+</package>
+
+<package>
+ <name>aspell-de</name>
+ <history>
+ <update>
+ <arch>x86_64</arch>
+ <version>1</version><release>1</release>
+ </update>
+ </history>
+ <provides>
+ <dep name='locale(aspell:de)' />
+ </provides>
+ <supplements>
+ <!--- ignoring '(aspell and namespace:language(de))' -->
+ </supplements>
+</package>
+
+<package>
+ <name>aspell-fr</name>
+ <history>
+ <update>
+ <arch>x86_64</arch>
+ <version>1</version><release>1</release>
+ </update>
+ </history>
+ <provides>
+ <dep name='locale(aspell:fr)' />
+ </provides>
+ <supplements>
+ <!--- ignoring '(aspell and namespace:language(de))' -->
+ </supplements>
+</package>
+
+<package>
+ <name>recommended-pkg</name>
+ <history>
+ <update>
+ <arch>x86_64</arch>
+ <version>1</version><release>1</release>
+ </update>
+ </history>
+</package>
+
+</subchannel></channel>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/tests/zypp/CMakeLists.txt new/libzypp-17.10.3/tests/zypp/CMakeLists.txt
--- old/libzypp-17.10.1/tests/zypp/CMakeLists.txt 2018-10-01 14:31:07.000000000 +0200
+++ new/libzypp-17.10.3/tests/zypp/CMakeLists.txt 2018-12-10 16:06:58.000000000 +0100
@@ -39,6 +39,7 @@
RepoManager
RepoStatus
ResKind
+ Resolver
ResStatus
Selectable
SetRelationMixin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/tests/zypp/PoolQuery_test.cc new/libzypp-17.10.3/tests/zypp/PoolQuery_test.cc
--- old/libzypp-17.10.1/tests/zypp/PoolQuery_test.cc 2018-10-01 14:31:07.000000000 +0200
+++ new/libzypp-17.10.3/tests/zypp/PoolQuery_test.cc 2018-12-18 11:52:47.000000000 +0100
@@ -870,4 +870,116 @@
}
}
+namespace
+{
+ std::string q2str( const PoolQuery & q_r )
+ {
+ str::Str s;
+ q_r.serialize( s.stream() );
+ return s;
+ }
+
+ template <class OutputIterator>
+ void str2q( const std::string & s_r, OutputIterator out_r )
+ {
+ std::istringstream s( s_r );
+ do {
+ PoolQuery q;
+ if ( q.recover( s ) )
+ *out_r++ = std::move(q);
+ else
+ break;
+ } while ( true );
+ }
+
+ typedef std::set<PoolQuery> Pqs;
+
+ PoolQuery str2q( const std::string & s_r )
+ {
+ Pqs ret;
+ str2q( s_r, std::insert_iterator<Pqs>( ret, ret.end() ) );
+ return *ret.begin();
+ }
+
+
+ std::string serialized( const std::string & arg_r )
+ { return "\n" + arg_r + "\n\n"; }
+
+ template
+ std::string serialized( const std::string & arg_r, Args... args_r )
+ { return "\n" + arg_r + serialized( args_r... ); }
+
+
+ void testSerializeAndBack( const PoolQuery & q_r, const PoolQuery & expect_r, bool equal_r = true )
+ {
+ static unsigned i = 0;
+
+ std::string s { q2str( q_r ) };
+ PoolQuery q { str2q( s ) };
+ BOOST_CHECK_EQUAL( (q == expect_r), equal_r );
+ if ( ++i && (q == expect_r) != equal_r )
+ {
+ cout << "+++" << endl;
+ cout << q << endl;
+ cout << "=== " << i << " ^v SerializeAndBack == " << equal_r << endl;
+ cout << expect_r << endl;
+ cout << "---" << endl;
+ }
+ }
+}
+
+BOOST_AUTO_TEST_CASE(zypperLocksSerialize)
+{
+ // Fix/cleanup zypper locks (old style, new stule, complex) (bsc#1112911)
+ // As you may notice: locks (by now) ignore any arch component
+ cout << "****zypperLocksSerialize****" << endl;
+ std::string n { "n*" };
+ Rel o { Rel::EQ };
+ Edition e { "v", "r", 1 };
+ Arch a { "a" };
+
+ {
+ // old style
+ // solvable_name: n*
+ PoolQuery oldq;
+ oldq.addAttribute( sat::SolvAttr::name, n );
+ testSerializeAndBack( oldq, oldq );
+
+ { // new style
+ PoolQuery q;
+ q.addDependency( sat::SolvAttr::name, n, Rel::ANY, Edition(), Arch_empty );
+ testSerializeAndBack( q, oldq );
+ }
+
+ { // new style + arch rule however stays complex
+ PoolQuery q;
+ q.addDependency( sat::SolvAttr::name, n, Rel::ANY, Edition(), a );
+ testSerializeAndBack( q, oldq, false );
+ testSerializeAndBack( q, q );
+ }
+ }
+
+ {
+ // old style
+ // solvable_name: n*
+ // version: == 1:v-r
+ PoolQuery oldq;
+ oldq.addAttribute( sat::SolvAttr::name, n );
+ oldq.setEdition( e, o );
+ testSerializeAndBack( oldq, oldq );
+
+ { // new style
+ PoolQuery q;
+ q.addDependency( sat::SolvAttr::name, n, o, e, Arch_empty );
+ testSerializeAndBack( q, oldq );
+ }
+
+ { // new style + arch rule however stays complex
+ PoolQuery q;
+ q.addDependency( sat::SolvAttr::name, n, o, e, a );
+ testSerializeAndBack( q, oldq, false );
+ testSerializeAndBack( q, q );
+ }
+ }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/tests/zypp/Resolver_test.cc new/libzypp-17.10.3/tests/zypp/Resolver_test.cc
--- old/libzypp-17.10.1/tests/zypp/Resolver_test.cc 1970-01-01 01:00:00.000000000 +0100
+++ new/libzypp-17.10.3/tests/zypp/Resolver_test.cc 2018-12-10 16:06:58.000000000 +0100
@@ -0,0 +1,95 @@
+#include
+#define BOOST_CHECK_MODULE Resolver
+using namespace boost::unit_test;
+
+#include "TestSetup.h"
+#include "zypp/ResPool.h"
+#include "zypp/ResPoolProxy.h"
+#include "zypp/pool/PoolStats.h"
+#include "zypp/ui/Selectable.h"
+
+static TestSetup test;
+
+struct BAD_TESTCASE {};
+
+typedef std::set<PoolItem> PoolItemSet;
+
+constexpr const unsigned onlyRequires = 0x1;
+constexpr const unsigned inrMode = 0x2;
+
+PoolItemSet resolve( unsigned flags_r = 0 )
+{
+ test.resolver().setOnlyRequires ( flags_r & onlyRequires );
+ test.resolver().setIgnoreAlreadyRecommended( ! ( flags_r & inrMode ) );
+ if ( ! test.resolver().resolvePool() )
+ throw BAD_TESTCASE();
+
+ return { make_filter_beginresfilter::ByTransact(test.pool()), make_filter_endresfilter::ByTransact(test.pool()) };
+}
+
+inline PoolItem getPi( const std::string & name_r, bool installed_r )
+{
+ for ( const auto & pi : test.pool().byName( name_r ) )
+ { if ( pi.isSystem() == installed_r ) return pi; }
+ throw BAD_TESTCASE();
+}
+inline PoolItem getIPi( const std::string & name_r )
+{ return getPi( name_r, true ); }
+inline PoolItem getAPi( const std::string & name_r )
+{ return getPi( name_r, false ); }
+
+/////////////////////////////////////////////////////////////////////////////
+// Pool content:
+PoolItem Ip; // IA: aspell
+PoolItem Ap;
+PoolItem Ipen; // IA: aspell-en (wanted locale)
+PoolItem Apen;
+PoolItem Apde; // A: aspell-de (wanted locale)
+PoolItem Apfr; // A: aspell-fr (unwanted locale)
+PoolItem Aprec; // A: recommended-pkg (by aspell)
+
+BOOST_AUTO_TEST_CASE(testcase_init)
+{
+ test.loadTestcaseRepos( TESTS_SRC_DIR"/data/TCNamespaceRecommends" );
+ Ip = getIPi( "aspell" );
+ Ap = getAPi( "aspell" );
+ Ipen = getIPi( "aspell-en" );
+ Apen = getAPi( "aspell-en" );
+ Apde = getAPi( "aspell-de" );
+ Apfr = getAPi( "aspell-fr" );
+ Aprec = getAPi( "recommended-pkg" );
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+inline void BOOST_checkresult( const PoolItemSet & resolved_r, const PoolItemSet & expected_r )
+{ BOOST_CHECK_EQUAL( resolved_r, expected_r ); }
+
+
+BOOST_AUTO_TEST_CASE(install)
+{
+ Ap.status().setTransact( true, ResStatus::USER );
+ // Upadte aspell, add all recommends
+ BOOST_checkresult( resolve(), { Ap, Ip, Apde, Aprec } );
+ Ap.status().setTransact( false, ResStatus::USER );
+}
+
+BOOST_AUTO_TEST_CASE(installOnlyRequires)
+{
+ Ap.status().setTransact( true, ResStatus::USER );
+ // Upadte aspell, add only namespace recommends
+ BOOST_checkresult( resolve( onlyRequires ), { Ap, Ip, Apde } );
+ Ap.status().setTransact( false, ResStatus::USER );
+}
+
+BOOST_AUTO_TEST_CASE(inr)
+{
+ // Fillup all recommends
+ BOOST_checkresult( resolve( inrMode ), { Apde, Aprec } );
+}
+
+BOOST_AUTO_TEST_CASE(inrOnlyRequires)
+{
+ // Fillup only namespace recommends
+ BOOST_checkresult( resolve( inrMode|onlyRequires ), { Apde } );
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/CMakeLists.txt new/libzypp-17.10.3/zypp/CMakeLists.txt
--- old/libzypp-17.10.1/zypp/CMakeLists.txt 2018-11-19 16:01:31.000000000 +0100
+++ new/libzypp-17.10.3/zypp/CMakeLists.txt 2018-12-10 16:41:40.000000000 +0100
@@ -235,6 +235,7 @@
base/DrunkenBishop.h
base/SerialNumber.h
base/Easy.h
+ base/Env.h
base/Errno.h
base/Random.h
base/Algorithm.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/PoolQuery.cc new/libzypp-17.10.3/zypp/PoolQuery.cc
--- old/libzypp-17.10.1/zypp/PoolQuery.cc 2018-10-02 10:58:51.000000000 +0200
+++ new/libzypp-17.10.3/zypp/PoolQuery.cc 2018-12-18 11:52:47.000000000 +0100
@@ -1302,6 +1302,70 @@
} while ( true );
+ // OLD STYLE VERSIONED LOCKS:
+ // solvable_name: kernel
+ // version: > 1
+ //
+ // NEW STYLE VERSIONED LOCKS:
+ // complex: AttrMatchData solvable:name kernel C SolvableRange\ >\ 1\ \"\"
+ // or
+ // solvable_name: kernel > 1
+ //
+ // Semantically equivalent as locks, but due to the different syntax
+ // the complex lock is wrongly handled by zypper.
+ //
+ // bsc#1112911: Unfortunately all styles are found in real-life locks-files.
+ // libzypp will try to make sure, when parsing the locks-file, that complex
+ // locks are rewritten into to OLD STYLE queries zypper can handle.
+ if ( !_pimpl->_attrs.count(SolvAttr::name) && _pimpl->_uncompiledPredicated.size() == 1 )
+ {
+ // No OLD STYLE lock for SolvAttr::name and exactly one complex lock...
+ const AttrMatchData & attrmatch { *_pimpl->_uncompiledPredicated.begin() };
+ if ( attrmatch.attr == SolvAttr::name && attrmatch.strMatcher.flags().mode() == Match::OTHER )
+ {
+ // ...for SolvAttr::name and following the global search flags.
+ // A candidate for a rewrite?
+
+ std::vectorstd::string words;
+ str::splitEscaped( attrmatch.predicateStr, std::back_inserter(words) );
+ if ( words.size() < 4 || words[3].empty() )
+ {
+ // We have _NO_ arch rule in the complex predicate, so we can simplify it.
+ //
+ // NOTE: AFAIK it's not possible to create (or have created) a complex lock
+ // with arch rule with zypper means. Nevertheless, in case such a rule made it
+ // into a locks file, it's better to have a strange looking 'zypper locks' list
+ // than to lock the wrong packages.
+ // (and remember that you can't use "addAttribute( SolvAttr::arch, ... )" because
+ // attributes are `OR`ed)
+
+ // kind
+ if ( attrmatch.kindPredicate )
+ {
+ _pimpl->_kinds.clear(); // an explicit kind overwrites any global one
+ addKind( attrmatch.kindPredicate );
+ }
+
+ // name
+ addAttribute( SolvAttr::name, attrmatch.strMatcher.searchstring() );
+
+ // edition
+ std::vectorstd::string words;
+ str::splitEscaped( attrmatch.predicateStr, std::back_inserter(words) );
+ if ( ! words.empty() )
+ {
+ if ( words[0] == "EditionRange" || words[0] == "SolvableRange" )
+ {
+ setEdition( Edition(words[2]), Rel(words[1]) );
+ }
+ }
+
+ // finally remove the complex lock
+ _pimpl->_uncompiledPredicated.clear();
+ }
+ }
+ }
+
return finded_something;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/RepoInfo.cc new/libzypp-17.10.3/zypp/RepoInfo.cc
--- old/libzypp-17.10.1/zypp/RepoInfo.cc 2018-10-12 16:35:39.000000000 +0200
+++ new/libzypp-17.10.3/zypp/RepoInfo.cc 2018-11-29 11:26:23.000000000 +0100
@@ -387,11 +387,11 @@
bool RepoInfo::repoGpgCheck() const
- { return gpgCheck() || _pimpl->cfgRepoGpgCheck(); }
+ { return gpgCheck() || bool(_pimpl->cfgRepoGpgCheck()); }
bool RepoInfo::repoGpgCheckIsMandatory() const
{
- bool ret = ( gpgCheck() && indeterminate(_pimpl->cfgRepoGpgCheck()) ) || _pimpl->cfgRepoGpgCheck();
+ bool ret = ( gpgCheck() && indeterminate(_pimpl->cfgRepoGpgCheck()) ) || bool(_pimpl->cfgRepoGpgCheck());
if ( ret && _pimpl->internalUnsignedConfirmed() ) // relax if unsigned repo was confirmed in the past
ret = false;
return ret;
@@ -402,10 +402,10 @@
bool RepoInfo::pkgGpgCheck() const
- { return _pimpl->cfgPkgGpgCheck() || ( gpgCheck() && !bool(validRepoSignature())/*enforced*/ ) ; }
+ { return bool(_pimpl->cfgPkgGpgCheck()) || ( gpgCheck() && !bool(validRepoSignature())/*enforced*/ ) ; }
bool RepoInfo::pkgGpgCheckIsMandatory() const
- { return _pimpl->cfgPkgGpgCheck() || ( gpgCheck() && indeterminate(_pimpl->cfgPkgGpgCheck()) && !bool(validRepoSignature())/*enforced*/ ); }
+ { return bool(_pimpl->cfgPkgGpgCheck()) || ( gpgCheck() && indeterminate(_pimpl->cfgPkgGpgCheck()) && !bool(validRepoSignature())/*enforced*/ ); }
void RepoInfo::setPkgGpgCheck( TriBool value_r )
{ _pimpl->rawPkgGpgCheck( value_r ); }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/RepoManager.cc new/libzypp-17.10.3/zypp/RepoManager.cc
--- old/libzypp-17.10.1/zypp/RepoManager.cc 2018-10-01 14:31:07.000000000 +0200
+++ new/libzypp-17.10.3/zypp/RepoManager.cc 2018-11-29 11:26:23.000000000 +0100
@@ -2243,7 +2243,7 @@
// Make sure the service repo is created with the appropriate enablement
if ( ! indeterminate(toBeEnabled) )
- it->setEnabled( toBeEnabled );
+ it->setEnabled( ( bool ) toBeEnabled );
DBG << "Service adds repo " << it->alias() << " " << (it->enabled()?"enabled":"disabled") << endl;
addRepository( *it );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/Resolver.cc new/libzypp-17.10.3/zypp/Resolver.cc
--- old/libzypp-17.10.1/zypp/Resolver.cc 2018-10-05 11:37:18.000000000 +0200
+++ new/libzypp-17.10.3/zypp/Resolver.cc 2018-12-10 16:06:59.000000000 +0100
@@ -86,10 +86,6 @@
void Resolver::setIgnoreAlreadyRecommended( bool yesno_r) { _pimpl->setIgnoreAlreadyRecommended( yesno_r ); }
bool Resolver::ignoreAlreadyRecommended() const { return _pimpl->ignoreAlreadyRecommended(); }
- void Resolver::setInr( ResolverNamespaces namespaces_r ) { _pimpl->setInr( namespaces_r ); }
- void Resolver::resetInr() { setInr( ResolverNamespaces() ); }
- ResolverNamespaces Resolver::inr() const { return _pimpl->inr(); }
-
void Resolver::setOnlyRequires( bool yesno_r ) { _pimpl->setOnlyRequires( yesno_r ); }
void Resolver::resetOnlyRequires() { _pimpl->setOnlyRequires( indeterminate ); }
bool Resolver::onlyRequires() const { return _pimpl->onlyRequires(); }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/Resolver.h new/libzypp-17.10.3/zypp/Resolver.h
--- old/libzypp-17.10.1/zypp/Resolver.h 2018-10-05 11:37:18.000000000 +0200
+++ new/libzypp-17.10.3/zypp/Resolver.h 2018-12-10 16:06:59.000000000 +0100
@@ -189,15 +189,6 @@
bool ignoreAlreadyRecommended() const;
/**
- * Weak form of \ref ignoreAlreadyRecommended \c =false.
- * Try to re-evaluate recommendations for specific namespaces only.
- * \note May not support all namespaces.
- */
- void setInr( ResolverNamespaces namespaces_r );
- void resetInr();
- ResolverNamespaces inr() const;
-
- /**
* Setting whether required packages are installed ONLY
* So recommended packages, language packages and packages which depend
* on hardware (modalias) will not be regarded.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/Target.h new/libzypp-17.10.3/zypp/Target.h
--- old/libzypp-17.10.1/zypp/Target.h 2018-10-01 14:31:07.000000000 +0200
+++ new/libzypp-17.10.3/zypp/Target.h 2018-12-10 16:41:40.000000000 +0100
@@ -93,6 +93,10 @@
/** Return the root set for this target */
Pathname root() const;
+ /** Whether the targets \ref root is not \c "/". */
+ bool chrooted() const
+ { return( ! root().emptyOrRoot() ); }
+
/** Return the path prefixed by the target root, unless it already is prefixed. */
Pathname assertRootPrefix( const Pathname & path_r ) const
{ return Pathname::assertprefix( root(), path_r ); }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/base/Env.h new/libzypp-17.10.3/zypp/base/Env.h
--- old/libzypp-17.10.1/zypp/base/Env.h 1970-01-01 01:00:00.000000000 +0100
+++ new/libzypp-17.10.3/zypp/base/Env.h 2018-12-10 16:41:40.000000000 +0100
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------\
+| ____ _ __ __ ___ |
+| |__ / \ / / . \ . \ |
+| / / \ V /| _/ _/ |
+| / /__ | | | | | | |
+| /_____||_| |_| |_| |
+| |
+\---------------------------------------------------------------------*/
+/** \file zypp/base/Env.h
+ */
+#ifndef ZYPP_BASE_ENV_H
+#define ZYPP_BASE_ENV_H
+
+#include <cstdlib>
+#include <string>
+#include <memory>
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{
+ ///////////////////////////////////////////////////////////////////
+ namespace env
+ {
+ ///////////////////////////////////////////////////////////////////
+ /// \class ScopedSet
+ /// \brief Temporarily set/unset an environment variable
+ /// \ingroup g_RAII
+ struct ScopedSet
+ {
+ ScopedSet( const ScopedSet & ) = delete;
+ ScopedSet & operator=( const ScopedSet & ) = delete;
+
+ ScopedSet( ScopedSet && ) = default;
+ ScopedSet & operator=( ScopedSet && ) = default;
+
+ public:
+ /** Default ctor (NOOP). */
+ ScopedSet()
+ {}
+
+ /** Set \a var_r to \a val_r (unsets \a var_r if \a val_r is a \c nullptr). */
+ ScopedSet( std::string var_r, const char * val_r )
+ : _var { std::move(var_r) }
+ {
+ if ( !_var.empty() )
+ {
+ if ( const char * orig = ::getenv( _var.c_str() ) )
+ _val.reset( new std::string( orig ) );
+ setval( val_r );
+ }
+ }
+
+ /** Restore the original setting. */
+ ~ScopedSet()
+ {
+ if ( !_var.empty() )
+ setval( _val ? _val->c_str() : nullptr );
+ }
+
+ private:
+ void setval( const char * val_r )
+ {
+ if ( val_r )
+ ::setenv( _var.c_str(), val_r, 1 );
+ else
+ ::unsetenv( _var.c_str() );
+ }
+
+ private:
+ std::string _var;
+ std::unique_ptrstd::string _val;
+ };
+
+ } // namespace env
+ ///////////////////////////////////////////////////////////////////
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
+#endif // ZYPP_BASE_ENV_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/repo/Applydeltarpm.cc new/libzypp-17.10.3/zypp/repo/Applydeltarpm.cc
--- old/libzypp-17.10.1/zypp/repo/Applydeltarpm.cc 2018-10-01 14:31:07.000000000 +0200
+++ new/libzypp-17.10.3/zypp/repo/Applydeltarpm.cc 2018-11-29 11:26:23.000000000 +0100
@@ -82,7 +82,7 @@
else
WAR << "No executable " << prog << endl;
}
- return _last;
+ return ( bool ) _last;
}
/******************************************************************
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/solver/detail/Resolver.cc new/libzypp-17.10.3/zypp/solver/detail/Resolver.cc
--- old/libzypp-17.10.1/zypp/solver/detail/Resolver.cc 2018-10-05 11:37:18.000000000 +0200
+++ new/libzypp-17.10.3/zypp/solver/detail/Resolver.cc 2018-12-10 16:06:59.000000000 +0100
@@ -76,7 +76,6 @@
OUTS( _solveSrcPackages );
OUTS( _cleandepsOnRemove );
OUTS( _ignoreAlreadyRecommended );
- OUTS( _inr );
#undef OUT
return os << "<resolver/>";
}
@@ -95,8 +94,6 @@
, _solveSrcPackages ( false )
, _cleandepsOnRemove ( ZConfig::instance().solver_cleandepsOnRemove() )
, _ignoreAlreadyRecommended ( true )
- // _inr defaults to ResolverNamespaces()
-
{
sat::Pool satPool( sat::Pool::instance() );
_satResolver = new SATResolver(_pool, satPool.get());
@@ -311,7 +308,6 @@
_satResolver->setFixsystem ( isVerifyingMode() );
_satResolver->setIgnorealreadyrecommended ( ignoreAlreadyRecommended() );
- _satResolver->setInr ( inr() );
_satResolver->setOnlyRequires ( onlyRequires() );
_satResolver->setUpdatesystem (_updateMode);
_satResolver->setSolveSrcPackages ( solveSrcPackages() );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/solver/detail/Resolver.h new/libzypp-17.10.3/zypp/solver/detail/Resolver.h
--- old/libzypp-17.10.1/zypp/solver/detail/Resolver.h 2018-10-05 11:37:18.000000000 +0200
+++ new/libzypp-17.10.3/zypp/solver/detail/Resolver.h 2018-12-10 16:06:59.000000000 +0100
@@ -95,7 +95,6 @@
bool _cleandepsOnRemove; // whether removing a package should also remove no longer needed requirements
bool _ignoreAlreadyRecommended; //ignore recommended packages that have already been recommended by the installed packages
- ResolverNamespaces _inr; // Try to re-evaluate recommendations for these namespaces
//@}
// Additional QueueItems which has to be regarded by the solver
@@ -168,9 +167,6 @@
bool ignoreAlreadyRecommended() const { return _ignoreAlreadyRecommended; }
void setIgnoreAlreadyRecommended( bool yesno_r ) { _ignoreAlreadyRecommended = yesno_r; }
- ResolverNamespaces inr() const { return _inr; }
- void setInr( ResolverNamespaces namespaces_r ) { _inr = namespaces_r; }
-
bool onlyRequires () const { return _onlyRequires; }
void setOnlyRequires( TriBool state_r );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/solver/detail/SATResolver.cc new/libzypp-17.10.3/zypp/solver/detail/SATResolver.cc
--- old/libzypp-17.10.1/zypp/solver/detail/SATResolver.cc 2018-10-05 11:37:18.000000000 +0200
+++ new/libzypp-17.10.3/zypp/solver/detail/SATResolver.cc 2018-12-10 16:06:59.000000000 +0100
@@ -170,7 +170,6 @@
os << " solveSrcPackages = " << _solveSrcPackages << endl;
os << " cleandepsOnRemove = " << _cleandepsOnRemove << endl;
os << " fixsystem = " << _fixsystem << endl;
- os << " inr namespace = " << _inr << endl;
} else {
os << "<NULL>";
}
@@ -193,7 +192,7 @@
, _updatesystem(false)
, _noupdateprovide ( false )
, _dosplitprovides ( true )
- , _onlyRequires(ZConfig::instance().solver_onlyRequires())
+ , _onlyRequires (ZConfig::instance().solver_onlyRequires())
, _ignorealreadyrecommended(true)
, _distupgrade(false)
, _distupgrade_removeunsupported(false)
@@ -406,7 +405,8 @@
solver_set_flag(_satSolver, SOLVER_FLAG_ALLOW_UNINSTALL, _allowuninstall);
solver_set_flag(_satSolver, SOLVER_FLAG_NO_UPDATEPROVIDE, _noupdateprovide);
solver_set_flag(_satSolver, SOLVER_FLAG_SPLITPROVIDES, _dosplitprovides);
- solver_set_flag(_satSolver, SOLVER_FLAG_IGNORE_RECOMMENDED, _onlyRequires);
+ solver_set_flag(_satSolver, SOLVER_FLAG_IGNORE_RECOMMENDED, false); // resolve recommended namespaces
+ solver_set_flag(_satSolver, SOLVER_FLAG_ONLY_NAMESPACE_RECOMMENDED, _onlyRequires); //
solver_set_flag(_satSolver, SOLVER_FLAG_DUP_ALLOW_DOWNGRADE, _dup_allowdowngrade );
solver_set_flag(_satSolver, SOLVER_FLAG_DUP_ALLOW_NAMECHANGE, _dup_allownamechange );
solver_set_flag(_satSolver, SOLVER_FLAG_DUP_ALLOW_ARCHCHANGE, _dup_allowarchchange );
@@ -625,19 +625,9 @@
}
// Ad rules for changed requestedLocales
- const auto & trackedLocaleIds( myPool().trackedLocaleIds() );
- if ( _inr.testFlag( ResolverNamespace::language ) )
- {
- // inr mode
- for ( const auto & locale : trackedLocaleIds.current() )
- {
- queue_push( &(_jobQueue), SOLVER_INSTALL | SOLVER_SOLVABLE_PROVIDES );
- queue_push( &(_jobQueue), Capability( ResolverNamespace::language, IdString(locale) ).id() );
- }
- // TODO cleanup not requested locale packages?
- }
- else
{
+ const auto & trackedLocaleIds( myPool().trackedLocaleIds() );
+
// just track changed locakes
for ( const auto & locale : trackedLocaleIds.added() )
{
@@ -858,7 +848,8 @@
solver_set_flag(_satSolver, SOLVER_FLAG_ALLOW_UNINSTALL, _allowuninstall);
solver_set_flag(_satSolver, SOLVER_FLAG_NO_UPDATEPROVIDE, _noupdateprovide);
solver_set_flag(_satSolver, SOLVER_FLAG_SPLITPROVIDES, _dosplitprovides);
- solver_set_flag(_satSolver, SOLVER_FLAG_IGNORE_RECOMMENDED, _onlyRequires);
+ solver_set_flag(_satSolver, SOLVER_FLAG_IGNORE_RECOMMENDED, false); // resolve recommended namespaces
+ solver_set_flag(_satSolver, SOLVER_FLAG_ONLY_NAMESPACE_RECOMMENDED, _onlyRequires); //
sat::Pool::instance().prepare();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/solver/detail/SATResolver.h new/libzypp-17.10.3/zypp/solver/detail/SATResolver.h
--- old/libzypp-17.10.1/zypp/solver/detail/SATResolver.h 2018-10-05 11:37:18.000000000 +0200
+++ new/libzypp-17.10.3/zypp/solver/detail/SATResolver.h 2018-12-10 16:06:59.000000000 +0100
@@ -103,7 +103,7 @@
bool _updatesystem:1; // update
bool _noupdateprovide:1; // true: update packages needs not to provide old package
bool _dosplitprovides:1; // true: consider legacy split provides
- bool _onlyRequires:1; // true: consider required packages only
+ bool _onlyRequires:1; // true: consider required packages only (but recommended namespaces)
bool _ignorealreadyrecommended:1; // true: ignore recommended packages that were already recommended by the installed packages
bool _distupgrade:1;
bool _distupgrade_removeunsupported:1;
@@ -115,8 +115,6 @@
bool _cleandepsOnRemove:1; // whether removing a package should also remove no longer needed requirements
private:
- ResolverNamespaces _inr; // Try to re-evaluate recommendations for these namespaces
- private:
// ---------------------------------- methods
std::string SATprobleminfoString (Id problem, std::string &detail, Id &ignoreId);
void resetItemTransaction (PoolItem item);
@@ -178,9 +176,6 @@
bool ignorealreadyrecommended () const {return _ignorealreadyrecommended;}
void setIgnorealreadyrecommended ( const bool ignorealreadyrecommended) { _ignorealreadyrecommended = ignorealreadyrecommended;}
- ResolverNamespaces inr() const { return _inr; }
- void setInr( ResolverNamespaces namespaces_r ) { _inr = namespaces_r; }
-
bool distupgrade () const {return _distupgrade;}
void setDistupgrade ( const bool distupgrade) { _distupgrade = distupgrade;}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/solver/detail/Testcase.cc new/libzypp-17.10.3/zypp/solver/detail/Testcase.cc
--- old/libzypp-17.10.1/zypp/solver/detail/Testcase.cc 2018-10-05 11:37:18.000000000 +0200
+++ new/libzypp-17.10.3/zypp/solver/detail/Testcase.cc 2018-12-10 16:06:59.000000000 +0100
@@ -308,7 +308,6 @@
void deleteResolvable( const PoolItem & pi_r );
void addDependencies (const CapabilitySet &capRequire, const CapabilitySet &capConflict);
void addUpgradeRepos( const std::set<Repository> & upgradeRepos_r );
- void addInr( ResolverNamespaces namespaces_r );
std::string filename () { return dumpFile; }
};
@@ -464,12 +463,6 @@
}
}
-void HelixControl::addInr( ResolverNamespaces namespaces_r )
-{
- if ( namespaces_r )
- *file << "" << endl;
-}
-
//---------------------------------------------------------------------------
Testcase::Testcase()
@@ -601,7 +594,6 @@
control.addDependencies (SystemCheck::instance().requiredSystemCap(),
SystemCheck::instance().conflictSystemCap());
control.addUpgradeRepos( resolver.upgradeRepos() );
- control.addInr( resolver.inr() );
control.addTagIf( "distupgrade", resolver.isUpgradeMode() );
control.addTagIf( "update", resolver.isUpdateMode() );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/target/TargetImpl.cc new/libzypp-17.10.3/zypp/target/TargetImpl.cc
--- old/libzypp-17.10.1/zypp/target/TargetImpl.cc 2018-11-19 16:01:31.000000000 +0100
+++ new/libzypp-17.10.3/zypp/target/TargetImpl.cc 2018-12-03 12:06:22.000000000 +0100
@@ -1100,8 +1100,6 @@
return true;
});
}
-
- INT << "Needreboot " << needrebootSpec << endl;
satpool.setNeedrebootSpec( std::move(needrebootSpec) );
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp/zypp_detail/ZYppImpl.cc new/libzypp-17.10.3/zypp/zypp_detail/ZYppImpl.cc
--- old/libzypp-17.10.1/zypp/zypp_detail/ZYppImpl.cc 2018-10-01 14:31:07.000000000 +0200
+++ new/libzypp-17.10.3/zypp/zypp_detail/ZYppImpl.cc 2018-12-10 16:41:40.000000000 +0100
@@ -14,6 +14,7 @@
#include "zypp/TmpPath.h"
#include "zypp/base/Logger.h"
#include "zypp/base/String.h"
+#include "zypp/base/Env.h"
#include "zypp/zypp_detail/ZYppImpl.h"
#include "zypp/target/TargetImpl.h"
@@ -147,8 +148,6 @@
* and target used for transact. */
ZYppCommitResult ZYppImpl::commit( const ZYppCommitPolicy & policy_r )
{
- setenv( "ZYPP_IS_RUNNING", str::numstring(getpid()).c_str(), 1 );
-
if ( getenv("ZYPP_TESTSUITE_FAKE_ARCH") )
{
ZYPP_THROW( Exception("ZYPP_TESTSUITE_FAKE_ARCH set. Commit not allowed and disabled.") );
@@ -158,6 +157,12 @@
if (! _target)
ZYPP_THROW( Exception("Target not initialized.") );
+
+ env::ScopedSet ea { "ZYPP_IS_RUNNING", str::numstring(getpid()).c_str() };
+ env::ScopedSet eb;
+ if ( _target->chrooted() )
+ eb = env::ScopedSet( "SYSTEMD_OFFLINE", "1" ); // bsc#1118758 - indicate no systemd if chrooted install
+
ZYppCommitResult res = _target->_pimpl->commit( pool(), policy_r );
if (! policy_r.dryRun() )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.10.1/zypp.conf new/libzypp-17.10.3/zypp.conf
--- old/libzypp-17.10.1/zypp.conf 2018-10-01 14:31:07.000000000 +0200
+++ new/libzypp-17.10.3/zypp.conf 2018-12-10 16:06:59.000000000 +0100
@@ -344,9 +344,9 @@
##
-## Whether required packages are installed ONLY
-## So recommended packages, language packages and packages which depend
-## on hardware (modalias) will not be regarded.
+## Whether only required packages are installed.
+##
+## Recommended packages, will not be regarded.
##
## Valid values: boolean
## Default value: false