Hello community, here is the log from the commit of package libzypp for openSUSE:Factory checked in at 2015-04-02 16:01:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libzypp (Old) and /work/SRC/openSUSE:Factory/.libzypp.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libzypp" Changes: -------- --- /work/SRC/openSUSE:Factory/libzypp/libzypp.changes 2015-03-16 06:58:04.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.libzypp.new/libzypp.changes 2015-04-02 16:01:07.000000000 +0200 @@ -1,0 +2,12 @@ +Thu Mar 19 16:44:39 CET 2015 - [email protected] + +- Suppress MediaChangeReport while testing multiple baseurls (bnc#899510) +- version 14.38.0 (30) + +------------------------------------------------------------------- +Mon Mar 16 14:05:28 CET 2015 - [email protected] + +- add support for SHA224/384/512 +- version 14.37.1 (30) + +------------------------------------------------------------------- Old: ---- libzypp-14.37.0.tar.bz2 New: ---- libzypp-14.38.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libzypp.spec ++++++ --- /var/tmp/diff_new_pack.RoOztA/_old 2015-04-02 16:01:07.000000000 +0200 +++ /var/tmp/diff_new_pack.RoOztA/_new 2015-04-02 16:01:07.000000000 +0200 @@ -19,7 +19,7 @@ %define force_gcc_46 0 Name: libzypp -Version: 14.37.0 +Version: 14.38.0 Release: 0 Url: git://gitorious.org/opensuse/libzypp.git Summary: Package, Patch, Pattern, and Product Management ++++++ libzypp-14.37.0.tar.bz2 -> libzypp-14.38.0.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/VERSION.cmake new/libzypp-14.38.0/VERSION.cmake --- old/libzypp-14.37.0/VERSION.cmake 2015-03-11 09:29:11.000000000 +0100 +++ new/libzypp-14.38.0/VERSION.cmake 2015-03-19 16:46:37.000000000 +0100 @@ -60,9 +60,9 @@ # SET(LIBZYPP_MAJOR "14") SET(LIBZYPP_COMPATMINOR "30") -SET(LIBZYPP_MINOR "37") +SET(LIBZYPP_MINOR "38") SET(LIBZYPP_PATCH "0") # -# LAST RELEASED: 14.37.0 (30) +# LAST RELEASED: 14.38.0 (30) # (The number in parenthesis is LIBZYPP_COMPATMINOR) #======= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/package/libzypp.changes new/libzypp-14.38.0/package/libzypp.changes --- old/libzypp-14.37.0/package/libzypp.changes 2015-03-11 09:29:11.000000000 +0100 +++ new/libzypp-14.38.0/package/libzypp.changes 2015-03-19 16:46:37.000000000 +0100 @@ -1,4 +1,16 @@ ------------------------------------------------------------------- +Thu Mar 19 16:44:39 CET 2015 - [email protected] + +- Suppress MediaChangeReport while testing multiple baseurls (bnc#899510) +- version 14.38.0 (30) + +------------------------------------------------------------------- +Mon Mar 16 14:05:28 CET 2015 - [email protected] + +- add support for SHA224/384/512 +- version 14.37.1 (30) + +------------------------------------------------------------------- Wed Mar 11 09:22:46 CET 2015 - [email protected] - New RepoVarExpand: Functor expanding repo variables in a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/tests/zypp/CheckSum_test.cc new/libzypp-14.38.0/tests/zypp/CheckSum_test.cc --- old/libzypp-14.37.0/tests/zypp/CheckSum_test.cc 2014-07-01 11:30:28.000000000 +0200 +++ new/libzypp-14.38.0/tests/zypp/CheckSum_test.cc 2015-03-16 14:07:17.000000000 +0100 @@ -1,4 +1,3 @@ - #include <iostream> #include <list> #include <string> @@ -9,17 +8,46 @@ #include "zypp/base/Logger.h" #include "zypp/base/Exception.h" #include "zypp/ZYppFactory.h" +#include "zypp/Digest.h" #include "zypp/ZYpp.h" + using boost::unit_test::test_case; using namespace std; using namespace zypp; +void chksumtest( const std::string & type_r, const std::string & sum_r ) +{ + BOOST_CHECK_EQUAL( type_r, CheckSum( sum_r ).type() ); // autodetect type + BOOST_CHECK_EQUAL( type_r, CheckSum( type_r, sum_r ).type() ); + BOOST_CHECK_EQUAL( sum_r, Digest::digest( type_r, "" ) ); + for ( const std::string & t : { "md5", "sha1", "sha224", "sha256", "sha384", "sha512", } ) + { + if ( t != type_r ) + { + BOOST_CHECK_THROW( CheckSum( t, sum_r ), Exception ); // wrong type/size + } + } +} // most frequently you implement test cases as a free functions BOOST_AUTO_TEST_CASE(checksum_test) { - BOOST_CHECK_THROW( CheckSum( "sha1", "dsdsads" ), Exception ); // wrong size - BOOST_CHECK_THROW( CheckSum( "sha256", "dsdsads" ), Exception ); // wrong size - BOOST_CHECK_THROW( CheckSum( "md5", "dsdsads" ), Exception ); // wrong size + CheckSum e; + BOOST_CHECK( e.empty() ); + BOOST_CHECK( e.type().empty() ); + BOOST_CHECK( e.checksum().empty() ); + // sum for "" + // md5 32 d41d8cd98f00b204e9800998ecf8427e + // 1 40 da39a3ee5e6b4b0d3255bfef95601890afd80709 + // 224 56 d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f + // 256 64 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + // 384 96 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b + // 512 128 cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e + chksumtest( CheckSum::md5Type(), "d41d8cd98f00b204e9800998ecf8427e" ); + chksumtest( CheckSum::sha1Type(), "da39a3ee5e6b4b0d3255bfef95601890afd80709" ); + chksumtest( CheckSum::sha224Type(), "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f" ); + chksumtest( CheckSum::sha256Type(), "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ); + chksumtest( CheckSum::sha384Type(), "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b" ); + chksumtest( CheckSum::sha512Type(), "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e" ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/CheckSum.cc new/libzypp-14.38.0/zypp/CheckSum.cc --- old/libzypp-14.37.0/zypp/CheckSum.cc 2014-07-01 11:30:28.000000000 +0200 +++ new/libzypp-14.38.0/zypp/CheckSum.cc 2015-03-16 14:07:17.000000000 +0100 @@ -26,17 +26,25 @@ { ///////////////////////////////////////////////////////////////// const std::string & CheckSum::md5Type() - { static std::string _type( "md5" ); return _type; } + { return Digest::md5(); } const std::string & CheckSum::shaType() { static std::string _type( "sha" ); return _type; } const std::string & CheckSum::sha1Type() - { static std::string _type( "sha1" ); return _type; } + { return Digest::sha1(); } + + const std::string & CheckSum::sha224Type() + { return Digest::sha224(); } const std::string & CheckSum::sha256Type() - { static std::string _type( "sha256" ); return _type; } + { return Digest::sha256(); } + + const std::string & CheckSum::sha384Type() + { return Digest::sha384(); } + const std::string & CheckSum::sha512Type() + { return Digest::sha512(); } CheckSum::CheckSum( const std::string & type, const std::string & checksum ) : _type( str::toLower( type ) ) @@ -44,6 +52,28 @@ { switch ( checksum.size() ) { + case 128: + if ( _type == sha512Type() ) + return; + if ( _type.empty() || _type == shaType() ) + { + _type = sha512Type(); + return; + } + // else: dubious + break; + + case 96: + if ( _type == sha384Type() ) + return; + if ( _type.empty() || _type == shaType() ) + { + _type = sha384Type(); + return; + } + // else: dubious + break; + case 64: if ( _type == sha256Type() ) return; @@ -55,6 +85,17 @@ // else: dubious break; + case 56: + if ( _type == sha224Type() ) + return; + if ( _type.empty() || _type == shaType() ) + { + _type = sha224Type(); + return; + } + // else: dubious + break; + case 40: if ( _type == sha1Type() ) return; @@ -97,7 +138,10 @@ if ( _type == md5Type() || _type == shaType() || _type == sha1Type() - || _type == sha256Type() ) + || _type == sha224Type() + || _type == sha256Type() + || _type == sha384Type() + || _type == sha512Type() ) { ZYPP_THROW( CheckSumException( msg ) ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/CheckSum.h new/libzypp-14.38.0/zypp/CheckSum.h --- old/libzypp-14.37.0/zypp/CheckSum.h 2014-07-01 11:30:28.000000000 +0200 +++ new/libzypp-14.38.0/zypp/CheckSum.h 2015-03-16 14:07:17.000000000 +0100 @@ -65,14 +65,20 @@ static const std::string & md5Type(); static const std::string & shaType(); static const std::string & sha1Type(); + static const std::string & sha224Type(); static const std::string & sha256Type(); + static const std::string & sha384Type(); + static const std::string & sha512Type(); /** \name Creates a checksum for algorithm \param type. */ //@{ static CheckSum md5( const std::string & checksum ) { return CheckSum( md5Type(), checksum); } static CheckSum sha( const std::string & checksum ) { return CheckSum( shaType(), checksum); } static CheckSum sha1( const std::string & checksum ) { return CheckSum( sha1Type(), checksum); } + static CheckSum sha224( const std::string & checksum ) { return CheckSum( sha224Type(), checksum); } static CheckSum sha256( const std::string & checksum ) { return CheckSum( sha256Type(), checksum); } + static CheckSum sha384( const std::string & checksum ) { return CheckSum( sha384Type(), checksum); } + static CheckSum sha512( const std::string & checksum ) { return CheckSum( sha512Type(), checksum); } //@} /** \name Reads the content of \param input_r and computes the checksum. */ @@ -80,12 +86,18 @@ static CheckSum md5( std::istream & input_r ) { return CheckSum( md5Type(), input_r ); } static CheckSum sha( std::istream & input_r ) { return CheckSum( sha1Type(), input_r ); } static CheckSum sha1( std::istream & input_r ) { return CheckSum( sha1Type(), input_r ); } + static CheckSum sha224( std::istream & input_r ) { return CheckSum( sha224Type(), input_r ); } static CheckSum sha256( std::istream & input_r ) { return CheckSum( sha256Type(), input_r ); } + static CheckSum sha384( std::istream & input_r ) { return CheckSum( sha384Type(), input_r ); } + static CheckSum sha512( std::istream & input_r ) { return CheckSum( sha512Type(), input_r ); } #ifndef SWIG // Swig treats it as syntax error static CheckSum md5( std::istream && input_r ) { return CheckSum( md5Type(), input_r ); } static CheckSum sha( std::istream && input_r ) { return CheckSum( sha1Type(), input_r ); } static CheckSum sha1( std::istream && input_r ) { return CheckSum( sha1Type(), input_r ); } + static CheckSum sha224( std::istream && input_r ) { return CheckSum( sha224Type(), input_r ); } static CheckSum sha256( std::istream && input_r ) { return CheckSum( sha256Type(), input_r ); } + static CheckSum sha384( std::istream && input_r ) { return CheckSum( sha384Type(), input_r ); } + static CheckSum sha512( std::istream && input_r ) { return CheckSum( sha512Type(), input_r ); } #endif //@} @@ -94,7 +106,10 @@ static CheckSum md5FromString( const std::string & input_r ) { return md5( std::stringstream( input_r ) ); } static CheckSum shaFromString( const std::string & input_r ) { return sha( std::stringstream( input_r ) ); } static CheckSum sha1FromString( const std::string & input_r ) { return sha1( std::stringstream( input_r ) ); } + static CheckSum sha224FromString( const std::string & input_r ) { return sha224( std::stringstream( input_r ) ); } static CheckSum sha256FromString( const std::string & input_r ) { return sha256( std::stringstream( input_r ) ); } + static CheckSum sha384FromString( const std::string & input_r ) { return sha384( std::stringstream( input_r ) ); } + static CheckSum sha512FromString( const std::string & input_r ) { return sha512( std::stringstream( input_r ) ); } //@} public: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/Digest.cc new/libzypp-14.38.0/zypp/Digest.cc --- old/libzypp-14.37.0/zypp/Digest.cc 2014-07-01 11:30:28.000000000 +0200 +++ new/libzypp-14.38.0/zypp/Digest.cc 2015-03-16 14:07:17.000000000 +0100 @@ -46,9 +46,18 @@ const std::string & Digest::sha1() { static std::string _type( "sha1" ); return _type; } + const std::string & Digest::sha224() + { static std::string _type( "sha224" ); return _type; } + const std::string & Digest::sha256() { static std::string _type( "sha256" ); return _type; } + const std::string & Digest::sha384() + { static std::string _type( "sha384" ); return _type; } + + const std::string & Digest::sha512() + { static std::string _type( "sha512" ); return _type; } + // private data class Digest::P { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/Digest.h new/libzypp-14.38.0/zypp/Digest.h --- old/libzypp-14.37.0/zypp/Digest.h 2014-07-01 11:30:28.000000000 +0200 +++ new/libzypp-14.38.0/zypp/Digest.h 2015-03-16 14:07:17.000000000 +0100 @@ -60,8 +60,14 @@ static const std::string & md5(); /** sha1 */ static const std::string & sha1(); + /** sha224 */ + static const std::string & sha224(); /** sha256 */ static const std::string & sha256(); + /** sha384 */ + static const std::string & sha384(); + /** sha512 */ + static const std::string & sha512(); //@} public: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/RepoManager.cc new/libzypp-14.38.0/zypp/RepoManager.cc --- old/libzypp-14.37.0/zypp/RepoManager.cc 2015-02-24 14:29:04.000000000 +0100 +++ new/libzypp-14.38.0/zypp/RepoManager.cc 2015-03-19 16:46:37.000000000 +0100 @@ -1012,6 +1012,9 @@ "Valid metadata not found at specified URLs", info.baseUrlsSize() ) ); + // Suppress (interactive) media::MediaChangeReport if we in have multiple basurls (>1) + media::ScopedDisableMediaChangeReport guard( info.baseUrlsSize() > 1 ); + // try urls one by one for ( RepoInfo::urls_const_iterator it = info.baseUrlsBegin(); it != info.baseUrlsEnd(); ++it ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/ZYppCallbacks.h new/libzypp-14.38.0/zypp/ZYppCallbacks.h --- old/libzypp-14.37.0/zypp/ZYppCallbacks.h 2014-08-29 14:49:37.000000000 +0200 +++ new/libzypp-14.38.0/zypp/ZYppCallbacks.h 2015-03-19 16:46:37.000000000 +0100 @@ -337,6 +337,19 @@ ) { return ABORT; } }; + /////////////////////////////////////////////////////////////////// + /// \class ScopedDisableMediaChangeReport + /// \brief Temporarily disable MediaChangeReport + /// Sometimes helpful to suppress interactive messages connected to + /// MediaChangeReport while fallback URLs are avaialble. + struct ScopedDisableMediaChangeReport + { + /** Disbale MediaChangeReport if \a condition_r is \c true.*/ + ScopedDisableMediaChangeReport( bool condition_r = true ); + private: + shared_ptr<callback::TempConnect<media::MediaChangeReport> > _guard; + }; + // progress for downloading a file struct DownloadProgressReport : public callback::ReportBase { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/repo/RepoProvideFile.cc new/libzypp-14.38.0/zypp/repo/RepoProvideFile.cc --- old/libzypp-14.37.0/zypp/repo/RepoProvideFile.cc 2014-07-01 11:30:28.000000000 +0200 +++ new/libzypp-14.38.0/zypp/repo/RepoProvideFile.cc 2015-03-20 14:17:12.000000000 +0100 @@ -291,6 +291,9 @@ MIL << "Added cache path " << destinationDir << endl; } + // Suppress (interactive) media::MediaChangeReport if we in have multiple basurls (>1) + media::ScopedDisableMediaChangeReport guard( repo_r.baseUrlsSize() > 1 ); + for ( RepoInfo::urls_const_iterator it = repo_r.baseUrlsBegin(); it != repo_r.baseUrlsEnd(); /* incremented in the loop */ ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/sat/LookupAttr.cc new/libzypp-14.38.0/zypp/sat/LookupAttr.cc --- old/libzypp-14.37.0/zypp/sat/LookupAttr.cc 2014-07-01 11:30:28.000000000 +0200 +++ new/libzypp-14.38.0/zypp/sat/LookupAttr.cc 2015-03-16 14:07:17.000000000 +0100 @@ -695,9 +695,21 @@ return CheckSum::sha1( ::repodata_chk2str( _dip->data, solvAttrType(), (unsigned char *)_dip->kv.str ) ); break; + case REPOKEY_TYPE_SHA224: + return CheckSum::sha224( ::repodata_chk2str( _dip->data, solvAttrType(), (unsigned char *)_dip->kv.str ) ); + break; + case REPOKEY_TYPE_SHA256: return CheckSum::sha256( ::repodata_chk2str( _dip->data, solvAttrType(), (unsigned char *)_dip->kv.str ) ); break; + + case REPOKEY_TYPE_SHA384: + return CheckSum::sha384( ::repodata_chk2str( _dip->data, solvAttrType(), (unsigned char *)_dip->kv.str ) ); + break; + + case REPOKEY_TYPE_SHA512: + return CheckSum::sha512( ::repodata_chk2str( _dip->data, solvAttrType(), (unsigned char *)_dip->kv.str ) ); + break; } } return CheckSum(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/sat/Solvable.cc new/libzypp-14.38.0/zypp/sat/Solvable.cc --- old/libzypp-14.37.0/zypp/sat/Solvable.cc 2014-07-01 11:30:28.000000000 +0200 +++ new/libzypp-14.38.0/zypp/sat/Solvable.cc 2015-03-16 14:07:17.000000000 +0100 @@ -196,7 +196,10 @@ { case REPOKEY_TYPE_MD5: return CheckSum::md5( s ); case REPOKEY_TYPE_SHA1: return CheckSum::sha1( s ); + case REPOKEY_TYPE_SHA224: return CheckSum::sha224( s ); case REPOKEY_TYPE_SHA256: return CheckSum::sha256( s ); + case REPOKEY_TYPE_SHA384: return CheckSum::sha384( s ); + case REPOKEY_TYPE_SHA512: return CheckSum::sha512( s ); } return CheckSum( std::string(), s ); // try to autodetect } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/ui/SelectableTraits.h new/libzypp-14.38.0/zypp/ui/SelectableTraits.h --- old/libzypp-14.37.0/zypp/ui/SelectableTraits.h 2014-07-01 11:30:28.000000000 +0200 +++ new/libzypp-14.38.0/zypp/ui/SelectableTraits.h 2015-03-20 14:17:12.000000000 +0100 @@ -37,6 +37,7 @@ * \li repository priority * \li best Arch (arch/noarch changes are ok) * \li best Edition + * \li newer buildtime * \li ResObject::constPtr as fallback. */ struct AVOrder : public std::binary_function<PoolItem,PoolItem,bool> @@ -65,6 +66,11 @@ if ( res ) return res > 0; + lprio = lhs->buildtime(); + rprio = rhs->buildtime(); + if ( lprio != rprio ) + return( lprio > rprio ); + lprio = lhs->satSolvable().repository().satInternalSubPriority(); rprio = rhs->satSolvable().repository().satInternalSubPriority(); if ( lprio != rprio ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.37.0/zypp/zypp_detail/ZYppImpl.cc new/libzypp-14.38.0/zypp/zypp_detail/ZYppImpl.cc --- old/libzypp-14.37.0/zypp/zypp_detail/ZYppImpl.cc 2014-07-01 11:30:28.000000000 +0200 +++ new/libzypp-14.38.0/zypp/zypp_detail/ZYppImpl.cc 2015-03-19 16:46:37.000000000 +0100 @@ -32,12 +32,29 @@ namespace zypp { ///////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////// + namespace media + { + ScopedDisableMediaChangeReport::ScopedDisableMediaChangeReport( bool condition_r ) + { + static weak_ptr<callback::TempConnect<media::MediaChangeReport> > globalguard; + if ( condition_r && ! (_guard = globalguard.lock()) ) + { + // aquire a new one.... + _guard.reset( new callback::TempConnect<media::MediaChangeReport>() ); + globalguard = _guard; + } + } + } // namespace media + /////////////////////////////////////////////////////////////////// + callback::SendReport<JobReport> & JobReport::instance() { static callback::SendReport<JobReport> _report; return _report; } + /////////////////////////////////////////////////////////////////// namespace zypp_detail { /////////////////////////////////////////////////////////////////
