Hello community,
here is the log from the commit of package libzypp for openSUSE:Factory checked in at 2014-07-29 16:48:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 2014-07-21 10:34:54.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libzypp.new/libzypp.changes 2014-07-29 16:48:12.000000000 +0200
@@ -1,0 +2,13 @@
+Mon Jul 28 11:32:40 CEST 2014 - mls(a)suse.de
+
+- reverted last commit to make yast2-pkg-bindings build again
+
+-------------------------------------------------------------------
+Fri Jul 25 12:56:17 CEST 2014 - ma(a)suse.de
+
+- JobReport: extend callback to allow passing UserData
+- hardlinkCopy must not fail if proc/sys/fs/protected_hardlink is on
+- adapt to changed boost::error_category throw specifier
+- version 14.27.0 (27)
+
+-------------------------------------------------------------------
Old:
----
libzypp-14.26.1.tar.bz2
New:
----
libzypp-14.27.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libzypp.spec ++++++
--- /var/tmp/diff_new_pack.GuSNuD/_old 2014-07-29 16:48:13.000000000 +0200
+++ /var/tmp/diff_new_pack.GuSNuD/_new 2014-07-29 16:48:13.000000000 +0200
@@ -23,7 +23,7 @@
Summary: Package, Patch, Pattern, and Product Management
License: GPL-2.0+
Group: System/Packages
-Version: 14.26.1
+Version: 14.27.0
Release: 0
Source: %{name}-%{version}.tar.bz2
Source1: %{name}-rpmlintrc
++++++ libzypp-14.26.1.tar.bz2 -> libzypp-14.27.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.26.1/VERSION.cmake new/libzypp-14.27.0/VERSION.cmake
--- old/libzypp-14.26.1/VERSION.cmake 2014-07-18 08:58:44.000000000 +0200
+++ new/libzypp-14.27.0/VERSION.cmake 2014-07-25 12:58:04.000000000 +0200
@@ -59,10 +59,10 @@
# See './mkChangelog -h' for help.
#
SET(LIBZYPP_MAJOR "14")
-SET(LIBZYPP_COMPATMINOR "26")
-SET(LIBZYPP_MINOR "26")
-SET(LIBZYPP_PATCH "1")
+SET(LIBZYPP_COMPATMINOR "27")
+SET(LIBZYPP_MINOR "27")
+SET(LIBZYPP_PATCH "0")
#
-# LAST RELEASED: 14.26.1 (26)
+# LAST RELEASED: 14.27.0 (27)
# (The number in parenthesis is LIBZYPP_COMPATMINOR)
#=======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.26.1/package/libzypp.changes new/libzypp-14.27.0/package/libzypp.changes
--- old/libzypp-14.26.1/package/libzypp.changes 2014-07-18 08:58:44.000000000 +0200
+++ new/libzypp-14.27.0/package/libzypp.changes 2014-07-28 11:43:25.000000000 +0200
@@ -1,4 +1,17 @@
-------------------------------------------------------------------
+Mon Jul 28 11:32:40 CEST 2014 - mls(a)suse.de
+
+- reverted last commit to make yast2-pkg-bindings build again
+
+-------------------------------------------------------------------
+Fri Jul 25 12:56:17 CEST 2014 - ma(a)suse.de
+
+- JobReport: extend callback to allow passing UserData
+- hardlinkCopy must not fail if proc/sys/fs/protected_hardlink is on
+- adapt to changed boost::error_category throw specifier
+- version 14.27.0 (27)
+
+-------------------------------------------------------------------
Fri Jul 18 08:57:39 CEST 2014 - ma(a)suse.de
- Execute install scripts with cwd==/ (bnc#886764)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.26.1/tests/zypp/CMakeLists.txt new/libzypp-14.27.0/tests/zypp/CMakeLists.txt
--- old/libzypp-14.26.1/tests/zypp/CMakeLists.txt 2014-07-01 11:30:28.000000000 +0200
+++ new/libzypp-14.27.0/tests/zypp/CMakeLists.txt 2014-07-25 12:58:04.000000000 +0200
@@ -9,6 +9,7 @@
Arch
Capabilities
CheckSum
+ ContentType
CpeId
Date
Dup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.26.1/tests/zypp/ContentType_test.cc new/libzypp-14.27.0/tests/zypp/ContentType_test.cc
--- old/libzypp-14.26.1/tests/zypp/ContentType_test.cc 1970-01-01 01:00:00.000000000 +0100
+++ new/libzypp-14.27.0/tests/zypp/ContentType_test.cc 2014-07-25 12:58:04.000000000 +0200
@@ -0,0 +1,65 @@
+#include <boost/test/auto_unit_test.hpp>
+#include <set>
+#include "zypp/ContentType.h"
+
+using std::cout;
+using std::endl;
+
+using zypp::ContentType;
+
+BOOST_AUTO_TEST_CASE(contenttype_default)
+{
+ ContentType v;
+ BOOST_CHECK( !v );
+ BOOST_CHECK( v.empty() );
+ BOOST_CHECK( v.emptyType() );
+ BOOST_CHECK( v.emptySubtype() );
+
+ ContentType w( "/" );
+ BOOST_CHECK_EQUAL( v == w, true );
+ BOOST_CHECK_EQUAL( v != w, false );
+ BOOST_CHECK_EQUAL( v < w, false );
+ BOOST_CHECK_EQUAL( v <= w, true );
+ BOOST_CHECK_EQUAL( v > w, false );
+ BOOST_CHECK_EQUAL( v >= w, true );
+
+ BOOST_CHECK_EQUAL( v.asString(), "" );
+}
+
+BOOST_AUTO_TEST_CASE(contenttype_val)
+{
+ BOOST_CHECK_THROW( ContentType( " " ), std::invalid_argument );
+
+ BOOST_CHECK_THROW( ContentType( "//" ), std::invalid_argument );
+ BOOST_CHECK_THROW( ContentType( "/ " ), std::invalid_argument );
+
+ BOOST_CHECK_THROW( ContentType( "/", "a" ), std::invalid_argument );
+ BOOST_CHECK_THROW( ContentType( "a", "/" ), std::invalid_argument );
+
+ BOOST_CHECK_THROW( ContentType( " ", "a" ), std::invalid_argument );
+ BOOST_CHECK_THROW( ContentType( "a", " " ), std::invalid_argument );
+}
+
+BOOST_AUTO_TEST_CASE(contenttype_cmp)
+{
+ std::set<ContentType> c( {
+ ContentType( "" ),
+ ContentType( "/" ), // == ""
+ ContentType( "a" ),
+ ContentType( "a/" ), // == "a"
+ ContentType( "/a" ),
+ ContentType( "" , "a" ), // == "/a"
+ ContentType( "a/b" ),
+ ContentType( "b/b" ),
+ ContentType( "b/c" )
+ });
+
+ std::set<ContentType>::const_iterator i = c.begin();
+ BOOST_CHECK_EQUAL( *(i++), ContentType() );
+ BOOST_CHECK_EQUAL( *(i++), ContentType( "", "a" ) );
+ BOOST_CHECK_EQUAL( *(i++), ContentType( "a", "" ) );
+ BOOST_CHECK_EQUAL( *(i++), ContentType( "a", "b" ) );
+ BOOST_CHECK_EQUAL( *(i++), ContentType( "b", "b" ) );
+ BOOST_CHECK_EQUAL( *(i++), ContentType( "b", "c" ) );
+ BOOST_CHECK( i == c.end() );
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.26.1/zypp/CMakeLists.txt new/libzypp-14.27.0/zypp/CMakeLists.txt
--- old/libzypp-14.26.1/zypp/CMakeLists.txt 2014-07-11 13:45:16.000000000 +0200
+++ new/libzypp-14.27.0/zypp/CMakeLists.txt 2014-07-25 12:58:04.000000000 +0200
@@ -103,6 +103,7 @@
CapMatch.h
Changelog.h
CheckSum.h
+ ContentType.h
CountryCode.h
CpeId.h
Date.h
@@ -179,6 +180,7 @@
TmpPath.h
TriBool.h
Url.h
+ UserData.h
VendorAttr.h
VendorSupportOptions.h
ZConfig.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.26.1/zypp/Callback.h new/libzypp-14.27.0/zypp/Callback.h
--- old/libzypp-14.26.1/zypp/Callback.h 2014-07-01 11:30:28.000000000 +0200
+++ new/libzypp-14.27.0/zypp/Callback.h 2014-07-25 12:58:04.000000000 +0200
@@ -125,7 +125,11 @@
* \li \c whoIsConnected Return a 'ReceiveReport*' to the currently
* connected ReceiveReport, or \c NULL if none is connected.
*
- */
+ * \par Passing Userdata via Callbacks
+ *
+ * For typesafe passing of user data via callbacks \see \ref UserData.
+ *
+ */
namespace callback
{ /////////////////////////////////////////////////////////////////
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.26.1/zypp/ContentType.h new/libzypp-14.27.0/zypp/ContentType.h
--- old/libzypp-14.26.1/zypp/ContentType.h 1970-01-01 01:00:00.000000000 +0100
+++ new/libzypp-14.27.0/zypp/ContentType.h 2014-07-25 12:58:04.000000000 +0200
@@ -0,0 +1,144 @@
+/*---------------------------------------------------------------------\
+| ____ _ __ __ ___ |
+| |__ / \ / / . \ . \ |
+| / / \ V /| _/ _/ |
+| / /__ | | | | | | |
+| /_____||_| |_| |_| |
+| |
+\---------------------------------------------------------------------*/
+/** \file zypp/ContentType.h
+ */
+#ifndef ZYPP_CONTENTTYPE_H
+#define ZYPP_CONTENTTYPE_H
+
+#include <iosfwd>
+#include <string>
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{
+ ///////////////////////////////////////////////////////////////////
+ /// \class ContentType
+ /// \brief Mime type like \c 'type/subtype' classification of content
+ ///
+ /// Used e.g. in \ref callback::UserData to describe the kind of
+ /// user data passed as \c void* to a callback. Neither type nor
+ /// subtype may contain a '/'.
+ ///////////////////////////////////////////////////////////////////
+ class ContentType
+ {
+ public:
+ /** Default ctor: empty */
+ ContentType()
+ {}
+
+ /** Ctor taking <tt>"type[/subtype]"</tt>
+ * \throws std::invalid_argument if string is malformed
+ */
+ explicit ContentType( const std::string & type_r )
+ {
+ std::string::size_type pos = type_r.find( "/" );
+ if ( pos == std::string::npos )
+ {
+ testAndSet( _type, type_r );
+ }
+ else
+ {
+ testAndSet( _type, type_r.substr( 0, pos ) );
+ testAndSet( _subtype, type_r.substr( pos+1 ) );
+ }
+ }
+
+ /** Ctor taking type and subtype
+ * \throws std::invalid_argument if string is malformed
+ */
+ ContentType( const std::string & type_r, const std::string & subtype_r )
+ {
+ testAndSet( _type, type_r );
+ testAndSet( _subtype, subtype_r );
+ }
+
+ public:
+ /** Get type */
+ const std::string & type() const
+ { return _type; }
+
+ /** Set type
+ * \throws std::invalid_argument if string is malformed
+ */
+ void type( const std::string & type_r )
+ { _type = type_r; }
+
+ /** Get subtype */
+ const std::string & subtype() const
+ { return _subtype; }
+
+ /** Set subtype
+ * \throws std::invalid_argument if string is malformed
+ */
+ void subtype( const std::string & subtype_r )
+ { _subtype = subtype_r; }
+
+ public:
+ /** Whether type and subtype are empty */
+ bool empty() const
+ { return emptyType() && emptySubtype(); }
+ /** Whether type is empty */
+ bool emptyType() const
+ { return _type.empty(); }
+ /** Whether subtype is empty */
+ bool emptySubtype() const
+ { return _subtype.empty(); }
+
+ /** Validate object in a boolean context: !empty */
+ explicit operator bool () const
+ { return !empty(); }
+
+ /** String representation <tt>"type[/subtype]"</tt> */
+ std::string asString() const
+ { std::string ret( type() ); if ( ! emptySubtype() ) { ret += "/"; ret += subtype(); } return ret; }
+
+ private:
+ void testAndSet( std::string & var_r, const std::string & val_r )
+ {
+ if ( val_r.find_first_of( "/ \t\r\n" ) != std::string::npos )
+ throw std::invalid_argument( "ContentType: illegal char in '" + val_r + "'" );
+ var_r = val_r;
+ }
+ private:
+ std::string _type;
+ std::string _subtype;
+ };
+
+ /** \relates ContentType Stream output */
+ inline std::ostream & operator<<( std::ostream & str, const ContentType & obj )
+ { return str << obj.asString(); }
+
+ /** \relates ContentType */
+ inline bool operator==( const ContentType & lhs, const ContentType & rhs )
+ { return lhs.type() == rhs.type() && lhs.subtype() == rhs.subtype(); }
+
+ /** \relates ContentType */
+ inline bool operator!=( const ContentType & lhs, const ContentType & rhs )
+ { return !( lhs == rhs ); }
+
+ /** \relates ContentType */
+ inline bool operator<( const ContentType & lhs, const ContentType & rhs )
+ { int cmp = lhs.type().compare( rhs.type() ); return cmp < 0 || ( cmp == 0 && lhs.subtype() < rhs.subtype() ); }
+
+ /** \relates ContentType */
+ inline bool operator<=( const ContentType & lhs, const ContentType & rhs )
+ { return lhs < rhs || lhs == rhs; }
+
+ /** \relates ContentType */
+ inline bool operator>( const ContentType & lhs, const ContentType & rhs )
+ { return !( lhs <= rhs ); }
+
+ /** \relates ContentType */
+ inline bool operator>=( const ContentType & lhs, const ContentType & rhs )
+ { return !( lhs < rhs ); }
+
+
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
+#endif // ZYPP_CONTENTTYPE_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.26.1/zypp/PathInfo.cc new/libzypp-14.27.0/zypp/PathInfo.cc
--- old/libzypp-14.26.1/zypp/PathInfo.cc 2014-07-01 11:30:28.000000000 +0200
+++ new/libzypp-14.27.0/zypp/PathInfo.cc 2014-07-25 12:58:04.000000000 +0200
@@ -836,6 +836,7 @@
{
switch ( errno )
{
+ case EPERM: // /proc/sys/fs/protected_hardlink in proc(5)
case EXDEV: // oldpath and newpath are not on the same mounted file system
return copy( oldpath, newpath );
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.26.1/zypp/UserData.h new/libzypp-14.27.0/zypp/UserData.h
--- old/libzypp-14.26.1/zypp/UserData.h 1970-01-01 01:00:00.000000000 +0100
+++ new/libzypp-14.27.0/zypp/UserData.h 2014-07-25 12:58:04.000000000 +0200
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------\
+| ____ _ __ __ ___ |
+| |__ / \ / / . \ . \ |
+| / / \ V /| _/ _/ |
+| / /__ | | | | | | |
+| /_____||_| |_| |_| |
+| |
+\---------------------------------------------------------------------*/
+/** \file zypp/UserData.h
+ */
+#ifndef ZYPP_USERDATA_H
+#define ZYPP_USERDATA_H
+
+#include <iosfwd>
+#include <string>
+#include <map>
+#include <boost/any.hpp>
+
+#include "zypp/base/PtrTypes.h"
+#include "zypp/ContentType.h"
+
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{
+ ///////////////////////////////////////////////////////////////////
+ namespace callback
+ {
+ ///////////////////////////////////////////////////////////////////
+ /// \class UserData
+ /// \brief Typesafe passing of user data via callbacks
+ ///
+ /// Basically a <tt>std::map<std::string,boost::any></tt> plus
+ /// associated \ref ContentType.
+ ///////////////////////////////////////////////////////////////////
+ class UserData
+ {
+ typedef std::map<std::string,boost::any> DataType;
+ public:
+ /** Default ctor */
+ UserData()
+ {}
+
+ public:
+ /** Get type */
+ const ContentType & type() const
+ { return _type; }
+
+ /** Set type */
+ void type( const ContentType & type_r )
+ { _type = type_r; }
+
+ public:
+ /** Validate object in a boolean context: has data */
+ explicit operator bool() const
+ { return ! ( _dataP == nullptr || _dataP->empty() ); }
+
+ private:
+ ContentType _type;
+ shared_ptr<DataType> _dataP;
+ };
+
+ /** \relates UserData Stream output */
+ inline std::ostream & operator<<( std::ostream & str, const UserData & obj )
+ { return str << "UserData(" << obj.type() << ")";}
+
+ } // namespace callback
+ ///////////////////////////////////////////////////////////////////
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
+#endif // ZYPP_USERDATA_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-14.26.1/zypp/ZYppCallbacks.h new/libzypp-14.27.0/zypp/ZYppCallbacks.h
--- old/libzypp-14.26.1/zypp/ZYppCallbacks.h 2014-07-01 11:30:28.000000000 +0200
+++ new/libzypp-14.27.0/zypp/ZYppCallbacks.h 2014-07-25 12:58:04.000000000 +0200
@@ -14,6 +14,7 @@
#include "zypp/base/EnumClass.h"
#include "zypp/Callback.h"
+#include "zypp/UserData.h"
#include "zypp/Resolvable.h"
#include "zypp/RepoInfo.h"
#include "zypp/Pathname.h"
@@ -765,23 +766,26 @@
) {}
};
-
-
///////////////////////////////////////////////////////////////////
/// \class JobReport
/// \brief Generic report for sending messages.
///////////////////////////////////////////////////////////////////
struct JobReport : public callback::ReportBase
{
+ public:
/** message type (use like 'enum class \ref MsgType') */
struct _MsgTypeDef {
- enum Enum { info, warning, error };
+ enum Enum { debug, info, warning, error, important, data };
};
-
typedef base::EnumClass<_MsgTypeDef> MsgType; ///< 'enum class MsgType'
+ /** typsafe map of userdata */
+ typedef callback::UserData UserData;
+
+ public:
/** Send a ready to show message text. */
- virtual bool message( MsgType type_r, const std::string & msg_r ) const { return true; }
+ virtual bool message( MsgType type_r, const std::string & msg_r, const UserData & userData_r ) const
+ { return true; }
/** \name Static sender instance */
@@ -789,12 +793,29 @@
/** Singleton sender instance */
static callback::SendReport<JobReport> & instance(); // impl in ZYppImpl.cc
+ /** send debug message text */
+ static bool debug( const MessageString & msg_r, const UserData & userData_r = UserData() )
+ { return instance()->message( MsgType::debug, msg_r, userData_r ); }
+
/** send message text */
- static bool info( const MessageString & msg_r ) { return instance()->message( MsgType::info, msg_r ); }
+ static bool info( const MessageString & msg_r, const UserData & userData_r = UserData() )
+ { return instance()->message( MsgType::info, msg_r, userData_r ); }
+
/** send warning text */
- static bool warning( const MessageString & msg_r ) { return instance()->message( MsgType::warning, msg_r ); }
+ static bool warning( const MessageString & msg_r, const UserData & userData_r = UserData() )
+ { return instance()->message( MsgType::warning, msg_r, userData_r ); }
+
/** send error text */
- static bool error( const MessageString & msg_r ) { return instance()->message( MsgType::error, msg_r ); }
+ static bool error( const MessageString & msg_r, const UserData & userData_r = UserData() )
+ { return instance()->message( MsgType::error, msg_r, userData_r ); }
+
+ /** send important message text */
+ static bool important( const MessageString & msg_r, const UserData & userData_r = UserData() )
+ { return instance()->message( MsgType::important, msg_r, userData_r ); }
+
+ /** send data message */
+ static bool data( const MessageString & msg_r, const UserData & userData_r = UserData() )
+ { return instance()->message( MsgType::data, msg_r, userData_r ); }
//@}
};
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org