Hello community, here is the log from the commit of package libzypp for openSUSE:Factory checked in at 2016-08-26 23:12:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2016-08-03 11:37:34.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libzypp.new/libzypp.changes 2016-08-26 23:12:37.000000000 +0200 @@ -1,0 +2,7 @@ +Wed Aug 10 17:10:41 CEST 2016 - [email protected] + +- Report numeric curl error if code is unrecognized (bsc#992302) +- multicurl: propagate proxy settings stored in repo url (bsc#933839) +- version 16.2.2 (0) + +------------------------------------------------------------------- Old: ---- libzypp-16.2.1.tar.bz2 New: ---- libzypp-16.2.2.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libzypp.spec ++++++ --- /var/tmp/diff_new_pack.IhA0n2/_old 2016-08-26 23:12:38.000000000 +0200 +++ /var/tmp/diff_new_pack.IhA0n2/_new 2016-08-26 23:12:38.000000000 +0200 @@ -19,7 +19,7 @@ %define force_gcc_46 0 Name: libzypp -Version: 16.2.1 +Version: 16.2.2 Release: 0 Url: git://gitorious.org/opensuse/libzypp.git Summary: Package, Patch, Pattern, and Product Management ++++++ libzypp-16.2.1.tar.bz2 -> libzypp-16.2.2.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-16.2.1/VERSION.cmake new/libzypp-16.2.2/VERSION.cmake --- old/libzypp-16.2.1/VERSION.cmake 2016-07-21 13:13:04.000000000 +0200 +++ new/libzypp-16.2.2/VERSION.cmake 2016-08-10 17:15:13.000000000 +0200 @@ -61,8 +61,8 @@ SET(LIBZYPP_MAJOR "16") SET(LIBZYPP_COMPATMINOR "0") SET(LIBZYPP_MINOR "2") -SET(LIBZYPP_PATCH "1") +SET(LIBZYPP_PATCH "2") # -# LAST RELEASED: 16.2.1 (0) +# LAST RELEASED: 16.2.2 (0) # (The number in parenthesis is LIBZYPP_COMPATMINOR) #======= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-16.2.1/package/libzypp.changes new/libzypp-16.2.2/package/libzypp.changes --- old/libzypp-16.2.1/package/libzypp.changes 2016-07-21 13:13:04.000000000 +0200 +++ new/libzypp-16.2.2/package/libzypp.changes 2016-08-10 17:15:13.000000000 +0200 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Wed Aug 10 17:10:41 CEST 2016 - [email protected] + +- Report numeric curl error if code is unrecognized (bsc#992302) +- multicurl: propagate proxy settings stored in repo url (bsc#933839) +- version 16.2.2 (0) + +------------------------------------------------------------------- Thu Jul 21 13:09:33 CEST 2016 - [email protected] - Rebuild .solv-files not matching the parsers LIBSOLV_TOOLVERSION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-16.2.1/zypp/Product.h new/libzypp-16.2.2/zypp/Product.h --- old/libzypp-16.2.1/zypp/Product.h 2016-07-18 16:41:07.000000000 +0200 +++ new/libzypp-16.2.2/zypp/Product.h 2016-08-10 13:01:08.000000000 +0200 @@ -43,7 +43,7 @@ */ sat::Solvable referencePackage() const; - /** For installed products the name of the coddesponding + /** For installed products the name of the corresponding * \c /etc/products.d entry. .*/ std::string referenceFilename() const; @@ -157,7 +157,7 @@ /***/ class UrlList; - /** Rerieve urls flagged with \c key_r for this product. + /** Retrieve URLs flagged with \c key_r for this product. * * This is the most common interface. There are convenience methods for * wellknown flags like \c "releasenotes", \c "register", \c "updateurls", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-16.2.1/zypp/base/Xml.h new/libzypp-16.2.2/zypp/base/Xml.h --- old/libzypp-16.2.1/zypp/base/Xml.h 2016-02-11 17:22:14.000000000 +0100 +++ new/libzypp-16.2.2/zypp/base/Xml.h 2016-08-12 18:13:05.000000000 +0200 @@ -112,24 +112,46 @@ /** Dtor wrting end tag */ ~Node() { - if ( _name.empty() ) - _out << "-->"; - else + if ( !_name.empty() ) { - if ( _hasContent ) - _out << "</" << _name << ">"; + if ( isComment() ) + _out << "-->"; else - _out << "/>"; + { + if ( _hasContent ) + _out << "</" << _name << ">"; + else + _out << "/>"; + } } } + /** Exception type thrown if attributes are added to a closed start node. */ + struct HasContentException{}; + + /** Add additional attributes (requires OptionalContentType) + * \throw HasContentException If start node is already closed + */ + Node & addAttr( const std::initializer_list<Attr> & attrs_r = {} ) + { + if ( _hasContent ) + throw HasContentException(); + printAttr( attrs_r ); + return *this; + } + + /** \overload for one */ + Node & addAttr( const Attr & attr_r ) + { return addAttr( { attr_r } ); } + + /** Return the output stream */ std::ostream & operator*() { if ( ! _hasContent ) { _hasContent = true; - if ( _name.empty() ) + if ( isComment() ) _out << "|"; else _out << ">"; @@ -143,17 +165,26 @@ if ( _name.empty() || _name[0] == '!' ) { _out << "<!--" << _name; - _name.clear(); + _name = "!"; // a comment } else _out << "<" << _name; - for ( const auto & pair : attrs_r ) - _out << " " << pair.first << "=\"" << xml::escape( pair.second ) << "\""; + printAttr( attrs_r ); - if ( ! _name.empty() && _hasContent ) + if ( isComment() && _hasContent ) _out << ">"; } + + void printAttr( const std::initializer_list<Attr> & attrs_r ) + { + for ( const auto & pair : attrs_r ) + _out << " " << pair.first << "=\"" << xml::escape( pair.second ) << "\""; + } + + bool isComment() const + { return( _name == "!" ); } + private: std::ostream & _out; std::string _name; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-16.2.1/zypp/media/MediaCurl.cc new/libzypp-16.2.2/zypp/media/MediaCurl.cc --- old/libzypp-16.2.1/zypp/media/MediaCurl.cc 2016-03-01 12:20:48.000000000 +0100 +++ new/libzypp-16.2.2/zypp/media/MediaCurl.cc 2016-08-10 13:01:08.000000000 +0200 @@ -1062,7 +1062,7 @@ break; case CURLE_SSL_PEER_CERTIFICATE: default: - err = "Unrecognized error"; + err = "Curl error " + str::numstring( code ); break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-16.2.1/zypp/media/MediaMultiCurl.cc new/libzypp-16.2.2/zypp/media/MediaMultiCurl.cc --- old/libzypp-16.2.1/zypp/media/MediaMultiCurl.cc 2016-02-11 17:22:14.000000000 +0100 +++ new/libzypp-16.2.2/zypp/media/MediaMultiCurl.cc 2016-07-27 12:05:04.000000000 +0200 @@ -1476,6 +1476,22 @@ DBG << "done: " << PathInfo(dest) << endl; } +/////////////////////////////////////////////////////////////////// +namespace { + // bsc#933839: propagate proxy settings passed in the repo URL + inline Url propagateQueryParams( Url url_r, const Url & template_r ) + { + for ( std::string param : { "proxy", "proxyport", "proxyuser", "proxypass"} ) + { + const std::string & value( template_r.getQueryParam( param ) ); + if ( ! value.empty() ) + url_r.setQueryParam( param, value ); + } + return url_r; + } +} +/////////////////////////////////////////////////////////////////// + void MediaMultiCurl::multifetch(const Pathname & filename, FILE *fp, std::vector<Url> *urllist, callback::SendReport<DownloadProgressReport> *report, MediaBlockList *blklist, off_t filesize) const { Url baseurl(getFileUrl(filename)); @@ -1514,7 +1530,7 @@ if (scheme == "http" || scheme == "https" || scheme == "ftp" || scheme == "tftp") { checkProtocol(*urliter); - myurllist.push_back(*urliter); + myurllist.push_back(propagateQueryParams(*urliter, _url)); } } catch (...) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-16.2.1/zypp/parser/xml/Reader.h new/libzypp-16.2.2/zypp/parser/xml/Reader.h --- old/libzypp-16.2.1/zypp/parser/xml/Reader.h 2016-02-11 17:22:14.000000000 +0100 +++ new/libzypp-16.2.2/zypp/parser/xml/Reader.h 2016-08-12 18:13:05.000000000 +0200 @@ -49,7 +49,7 @@ * * \code * // Consume a node. - * bool consumeNode( XML::Reader & reader_r ) + * bool consumeNode( xml::Reader & reader_r ) * { * DBG << *reader_r << endl; * return true; @@ -60,7 +60,7 @@ * { * try * { - * XML::Reader reader( "/Local/repodata/repomd.xml" ); + * xml::Reader reader( "/Local/repodata/repomd.xml" ); * reader.foreachNode( consumeNode ); * } * catch ( const Exception & ) @@ -70,19 +70,19 @@ * * \code * // Consume a node. - * bool consumeNodeAndAttribute( XML::Reader & reader_r ) + * bool consumeNodeAndAttribute( xml::Reader & reader_r ) * { * consumeNode( reader_r ); * return reader_r.foreachNodeAttribute( consumeNode ); * } * - * // Consume all nodes and thair attributes. + * // Consume all nodes and their attributes. * void example() * { * Pathname repodata( "/Local/repodata/repomd.xml" ); * try * { - * XML::Reader reader( "/Local/repodata/repomd.xml" ); + * xml::Reader reader( "/Local/repodata/repomd.xml" ); * reader.foreachNode( consumeNodeAndAttribute ); * // or: * // reader.foreachNodeOrAttribute( consumeNode ) @@ -105,7 +105,7 @@ public: /** - * If the curent node is not empty, advances the reader to the next + * If the current node is not empty, advances the reader to the next * node, and returns the value * * \note if the node has a xml subtree you will probably jump to that node
