Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libzypp for openSUSE:Factory checked 
in at 2021-09-02 23:20:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libzypp (Old)
 and      /work/SRC/openSUSE:Factory/.libzypp.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libzypp"

Thu Sep  2 23:20:07 2021 rev:447 rq:915238 version:17.28.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/libzypp/libzypp.changes  2021-08-26 
23:14:34.056260631 +0200
+++ /work/SRC/openSUSE:Factory/.libzypp.new.1899/libzypp.changes        
2021-09-02 23:20:12.412545408 +0200
@@ -1,0 +2,7 @@
+Tue Aug 31 10:49:51 CEST 2021 - m...@suse.de
+
+- Workaround Bug 1189788: Don't allow ZYPP_SINGLE_RPMTRANS=1 on a
+  not UsrMerged Tumbleweed system.
+- version 17.28.2 (22)
+
+-------------------------------------------------------------------

Old:
----
  libzypp-17.28.1.tar.bz2

New:
----
  libzypp-17.28.2.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libzypp.spec ++++++
--- /var/tmp/diff_new_pack.TAyZUQ/_old  2021-09-02 23:20:13.020546166 +0200
+++ /var/tmp/diff_new_pack.TAyZUQ/_new  2021-09-02 23:20:13.020546166 +0200
@@ -40,11 +40,11 @@
 %endif
 
 Name:           libzypp
-Version:        17.28.1
+Version:        17.28.2
 Release:        0
+License:        GPL-2.0-or-later
 URL:            https://github.com/openSUSE/libzypp
 Summary:        Library for package, patch, pattern and product management
-License:        GPL-2.0-or-later
 Group:          System/Packages
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Source:         %{name}-%{version}.tar.bz2
@@ -245,8 +245,15 @@
 %build
 mkdir build
 cd build
+%if 0%{?suse_version} > 1500
+# Bug 1189788 - UsrMerge: filesystem package breaks system when upgraded in a 
single rpm transaction
+# While the bug is not fixed, we don't allow ZYPP_SINGLE_RPMTRANS=1 on a not 
UsrMerged system
+export CFLAGS="%{optflags} -DNO_SINGLETRANS_USERMERGE"
+export CXXFLAGS="%{optflags} -DNO_SINGLETRANS_USERMERGE"
+%else
 export CFLAGS="%{optflags}"
 export CXXFLAGS="%{optflags}"
+%endif
 unset EXTRA_CMAKE_OPTIONS
 
 cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \
@@ -344,14 +351,14 @@
   echo "
 solvable_name: $1
 match_type: glob
-version: $2
+Version:        $2
 " >> ${LOCKSFILE}
 ;;
     3 ) #TODO version
   echo "
 solvable_name: $1
 match_type: glob
-version: $2 $3
+Version:        $2 $3
 " >> ${LOCKSFILE}
   ;;
 esac

++++++ libzypp-17.28.1.tar.bz2 -> libzypp-17.28.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.28.1/CMakeLists.txt 
new/libzypp-17.28.2/CMakeLists.txt
--- old/libzypp-17.28.1/CMakeLists.txt  2021-07-12 11:16:20.000000000 +0200
+++ new/libzypp-17.28.2/CMakeLists.txt  2021-08-30 09:01:19.000000000 +0200
@@ -8,7 +8,6 @@
 OPTION (ENABLE_BUILD_DOCS "Build documentation by default?" OFF)
 OPTION (ENABLE_BUILD_TRANS "Build translation files by default?" OFF)
 OPTION (ENABLE_BUILD_TESTS "Build and run test suite by default?" OFF)
-OPTION (ENABLE_USE_THREADS "Enable using threads (NOT being used by 
threads!)?" OFF)
 OPTION (ENABLE_ZSTD_COMPRESSION "Build with zstd compression support?" OFF)
 OPTION (ENABLE_ZCHUNK_COMPRESSION "Build with zchunk compression support?" OFF)
 # Helps with bug https://bugzilla.gnome.org/show_bug.cgi?id=784550 , Segfault 
during signal emission when slots are cleared
@@ -75,8 +74,14 @@
 CHECK_C_COMPILER_FLAG("-Werror=format-security" CC_FORMAT_SECURITY)
 CHECK_CXX_COMPILER_FLAG("-Werror=format-security" CXX_FORMAT_SECURITY)
 
-SET( CMAKE_C_FLAGS     "${CMAKE_C_FLAGS} -fno-strict-aliasing -fPIC -g -Wall 
-Wp,-D_GLIBCXX_ASSERTIONS" )
-SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing -fPIC -g -Wall 
-Wp,-D_GLIBCXX_ASSERTIONS" )
+SET( CMAKE_THREAD_PREFER_PTHREAD TRUE )
+FIND_PACKAGE( Threads REQUIRED )
+IF ( NOT CMAKE_USE_PTHREADS_INIT )
+  MESSAGE( FATAL_ERROR "No pthreads found" )
+ENDIF ( NOT CMAKE_USE_PTHREADS_INIT )
+
+SET( CMAKE_C_FLAGS     "${CMAKE_C_FLAGS} -pthread -fno-strict-aliasing -fPIC 
-g -Wall -Wp,-D_GLIBCXX_ASSERTIONS" )
+SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -fno-strict-aliasing -fPIC 
-g -Wall -Wp,-D_GLIBCXX_ASSERTIONS" )
 
 SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden 
-Woverloaded-virtual -Wnon-virtual-dtor" )
 
@@ -130,16 +135,6 @@
 
 ####################################################################
 
-IF ( ENABLE_USE_THREADS )
-  SET( CMAKE_THREAD_PREFER_PTHREAD TRUE )
-  FIND_PACKAGE( Threads REQUIRED )
-  IF ( CMAKE_USE_PTHREADS_INIT )
-    MESSAGE( STATUS "May use threads." )
-    SET( CMAKE_C_FLAGS     "${CMAKE_C_FLAGS} -pthread -DZYPP_USE_THREADS" )
-    SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -DZYPP_USE_THREADS" )
-  ENDIF ( CMAKE_USE_PTHREADS_INIT )
-ENDIF ( ENABLE_USE_THREADS )
-
 INCLUDE(CheckSymbolExists)
 FIND_PACKAGE(Rpm REQUIRED)
 IF ( NOT RPM_FOUND)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.28.1/VERSION.cmake 
new/libzypp-17.28.2/VERSION.cmake
--- old/libzypp-17.28.1/VERSION.cmake   2021-08-23 08:41:24.000000000 +0200
+++ new/libzypp-17.28.2/VERSION.cmake   2021-08-31 10:51:19.000000000 +0200
@@ -61,8 +61,8 @@
 SET(LIBZYPP_MAJOR "17")
 SET(LIBZYPP_COMPATMINOR "22")
 SET(LIBZYPP_MINOR "28")
-SET(LIBZYPP_PATCH "1")
+SET(LIBZYPP_PATCH "2")
 #
-# LAST RELEASED: 17.28.1 (22)
+# LAST RELEASED: 17.28.2 (22)
 # (The number in parenthesis is LIBZYPP_COMPATMINOR)
 #=======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.28.1/libzypp.spec.cmake 
new/libzypp-17.28.2/libzypp.spec.cmake
--- old/libzypp-17.28.1/libzypp.spec.cmake      2021-07-22 11:47:11.000000000 
+0200
+++ new/libzypp-17.28.2/libzypp.spec.cmake      2021-08-26 18:56:17.000000000 
+0200
@@ -244,8 +244,15 @@
 %build
 mkdir build
 cd build
+%if 0%{?suse_version} > 1500
+# Bug 1189788 - UsrMerge: filesystem package breaks system when upgraded in a 
single rpm transaction
+# While the bug is not fixed, we don't allow ZYPP_SINGLE_RPMTRANS=1 on a not 
UsrMerged system
+export CFLAGS="%{optflags} -DNO_SINGLETRANS_USERMERGE"
+export CXXFLAGS="%{optflags} -DNO_SINGLETRANS_USERMERGE"
+%else
 export CFLAGS="%{optflags}"
 export CXXFLAGS="%{optflags}"
+%endif
 unset EXTRA_CMAKE_OPTIONS
 
 cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.28.1/package/libzypp.changes 
new/libzypp-17.28.2/package/libzypp.changes
--- old/libzypp-17.28.1/package/libzypp.changes 2021-08-23 08:41:24.000000000 
+0200
+++ new/libzypp-17.28.2/package/libzypp.changes 2021-08-31 10:51:19.000000000 
+0200
@@ -1,4 +1,11 @@
 -------------------------------------------------------------------
+Tue Aug 31 10:49:51 CEST 2021 - m...@suse.de
+
+- Workaround Bug 1189788: Don't allow ZYPP_SINGLE_RPMTRANS=1 on a
+  not UsrMerged Tumbleweed system.
+- version 17.28.2 (22)
+
+-------------------------------------------------------------------
 Mon Aug 23 08:39:15 CEST 2021 - m...@suse.de
 
 - Fix crashes in logging code when shutting down (bsc#1189031)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.28.1/zypp/CMakeLists.txt 
new/libzypp-17.28.2/zypp/CMakeLists.txt
--- old/libzypp-17.28.1/zypp/CMakeLists.txt     2021-07-26 11:51:28.000000000 
+0200
+++ new/libzypp-17.28.2/zypp/CMakeLists.txt     2021-08-26 18:56:18.000000000 
+0200
@@ -945,7 +945,6 @@
   TARGET_LINK_LIBRARIES(${LIBNAME} zypp-core )
   TARGET_LINK_LIBRARIES(${LIBNAME} zypp-protobuf )
 
-
   TARGET_LINK_LIBRARIES(${LIBNAME} ${UTIL_LIBRARY} )
   TARGET_LINK_LIBRARIES(${LIBNAME} ${RPM_LIBRARY} )
   TARGET_LINK_LIBRARIES(${LIBNAME} ${GETTEXT_LIBRARIES} )
@@ -958,6 +957,7 @@
   TARGET_LINK_LIBRARIES(${LIBNAME} ${GPGME_PTHREAD_LIBRARIES})
   target_link_libraries(${LIBNAME} ${YAML_CPP_LIBRARIES})
   target_link_libraries(${LIBNAME} ${PROTOBUF_LITE_LIBRARIES})
+  TARGET_LINK_LIBRARIES(${LIBNAME} pthread )
 
   IF (ENABLE_ZSTD_COMPRESSION)
     TARGET_LINK_LIBRARIES(${LIBNAME} ${ZSTD_LIBRARY})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.28.1/zypp/ZYppCommitPolicy.cc 
new/libzypp-17.28.2/zypp/ZYppCommitPolicy.cc
--- old/libzypp-17.28.1/zypp/ZYppCommitPolicy.cc        2021-07-12 
11:16:20.000000000 +0200
+++ new/libzypp-17.28.2/zypp/ZYppCommitPolicy.cc        2021-08-26 
18:56:18.000000000 +0200
@@ -20,6 +20,10 @@
 #include <zypp-core/base/LogControl.h>
 #include <zypp-core/TriBool.h>
 
+#ifdef NO_SINGLETRANS_USERMERGE
+#include <zypp/PathInfo.h>
+#include <zypp/ZYppCallbacks.h>
+#endif
 ///////////////////////////////////////////////////////////////////
 namespace zypp
 { /////////////////////////////////////////////////////////////////
@@ -27,16 +31,29 @@
 
   bool singleTransInEnv ()
   {
-    static TriBool singleTrans = indeterminate;
-    if ( indeterminate(singleTrans) ) {
+    static bool singleTrans = ([]()->bool{
       const char *val = ::getenv("ZYPP_SINGLE_RPMTRANS");
-      if ( val && std::string_view( val ) == "1"  )
-        singleTrans = true;
-      else
-        singleTrans = false;
-    }
-    // for some reason some compilers do not accept the implicit conversion to 
bool here.
-    return bool( singleTrans );
+#ifdef NO_SINGLETRANS_USERMERGE
+      // Bug 1189788 - UsrMerge: filesystem package breaks system when 
upgraded in a single rpm transaction
+      // While the bug is not fixed, we don't allow ZYPP_SINGLE_RPMTRANS=1 on 
a not UsrMerged system.
+      // I.e. if /lib is a directory and not a symlink.
+      bool ret = ( val && std::string_view( val ) == "1"  );
+      if ( ret && PathInfo( "/lib", PathInfo::LSTAT ).isDir() ) {
+       WAR << "Ignore $ZYPP_SINGLE_RPMTRANS=1: Bug 1189788 - UsrMerge: 
filesystem package breaks system when upgraded in a single rpm transaction" << 
std::endl;
+       JobReport::info(
+       "[boo#1189788] Tumbleweeds filesystem package seems to be unable to 
perform the\n"
+       "              UsrMerge reliably in a single transaction. The 
requested\n"
+       "              $ZYPP_SINGLE_RPMTRANS=1 will therefore be IGNORED 
because\n"
+       "              the UsrMerge did not yet happen on this system."
+       , JobReport::UserData( "cmdout", "[boo#1189788]" ) );
+       return false;
+      }
+      return ret;
+#else
+      return ( val && std::string_view( val ) == "1"  );
+#endif
+    })();
+    return singleTrans;
   }
 
   ///////////////////////////////////////////////////////////////////
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.28.1/zypp/target/TargetImpl.cc 
new/libzypp-17.28.2/zypp/target/TargetImpl.cc
--- old/libzypp-17.28.1/zypp/target/TargetImpl.cc       2021-08-20 
15:11:24.000000000 +0200
+++ new/libzypp-17.28.2/zypp/target/TargetImpl.cc       2021-08-30 
09:26:34.000000000 +0200
@@ -85,6 +85,7 @@
 extern "C"
 {
 #include <solv/repo_rpmdb.h>
+#include <solv/chksum.h>
 }
 namespace zypp
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.28.1/zypp/zyppng/media/medianetwork.cc 
new/libzypp-17.28.2/zypp/zyppng/media/medianetwork.cc
--- old/libzypp-17.28.1/zypp/zyppng/media/medianetwork.cc       2021-07-12 
11:16:20.000000000 +0200
+++ new/libzypp-17.28.2/zypp/zyppng/media/medianetwork.cc       2021-08-30 
10:31:32.000000000 +0200
@@ -539,6 +539,9 @@
         case NetworkRequestError::NotFound:
           ZYPP_THROW( zypp::media::MediaFileNotFoundException( reqUrl, 
filename ) );
           break;
+        case NetworkRequestError::ExceededMaxLen:
+          ZYPP_THROW( zypp::media::MediaFileSizeExceededException( reqUrl, 0 ) 
);
+          break;
         default:
           break;
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libzypp-17.28.1/zypp/zyppng/media/network/networkrequestdispatcher.cc 
new/libzypp-17.28.2/zypp/zyppng/media/network/networkrequestdispatcher.cc
--- old/libzypp-17.28.1/zypp/zyppng/media/network/networkrequestdispatcher.cc   
2021-07-12 11:16:20.000000000 +0200
+++ new/libzypp-17.28.2/zypp/zyppng/media/network/networkrequestdispatcher.cc   
2021-08-30 10:31:32.000000000 +0200
@@ -19,6 +19,7 @@
 
 #include <zypp/base/Logger.h>
 #include <zypp/base/String.h>
+#include <zypp/base/DtorReset.h>
 
 using namespace boost;
 
@@ -156,7 +157,17 @@
 void NetworkRequestDispatcherPrivate::handleMultiSocketAction(curl_socket_t 
nativeSocket, int evBitmask)
 {
   int running = 0;
-  CURLMcode rc = curl_multi_socket_action( _multi, nativeSocket, evBitmask, 
&running );
+  
+  // when inside a curl callback we can not call another multi curl API, 
+  // for now just lock the thing, but we should consider rewriting this 
+  // to post events instead of doing direct calls simply to decouple from 
+  // that limitation
+  CURLMcode rc = CURLM_OK;
+  {
+    zypp::DtorReset lockSet( _locked );
+    _locked = true;
+    rc = curl_multi_socket_action( _multi, nativeSocket, evBitmask, &running );
+  }
   if (rc != 0) {
     //we can not recover from a error like that, cancel all and stop
     NetworkRequestError err = NetworkRequestErrorPrivate::fromCurlMError( rc );
@@ -166,6 +177,11 @@
     _sigError.emit( *z_func() );
     return;
   }
+  
+  // make sure we dequeue pending requests ( in case a call to dequeue was 
blocked during the API call )
+  zypp::OnScopeExit scopeFinally([this](){
+    this->dequeuePending();
+  });
 
   int msgs_left = 0;
   CURLMsg *msg = nullptr;
@@ -202,6 +218,7 @@
 void NetworkRequestDispatcherPrivate::cancelAll( NetworkRequestError result )
 {
   //prevent dequeuePending from filling up the runningDownloads again
+  zypp::DtorReset lockReset( _locked );
   _locked = true;
 
   while ( _runningDownloads.size() ) {
@@ -212,8 +229,6 @@
     std::shared_ptr<NetworkRequest> &req = _pendingDownloads.back();
     setFinished(*req, result );
   }
-
-  _locked = false;
 }
 
 void NetworkRequestDispatcherPrivate::setFinished( NetworkRequest &req, 
NetworkRequestError result )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libzypp-17.28.1/zypp/zyppng/media/network/private/downloaderstates/rangedownloader_p.cc
 
new/libzypp-17.28.2/zypp/zyppng/media/network/private/downloaderstates/rangedownloader_p.cc
--- 
old/libzypp-17.28.1/zypp/zyppng/media/network/private/downloaderstates/rangedownloader_p.cc
 2021-07-12 11:16:20.000000000 +0200
+++ 
new/libzypp-17.28.2/zypp/zyppng/media/network/private/downloaderstates/rangedownloader_p.cc
 2021-08-30 10:31:32.000000000 +0200
@@ -26,6 +26,10 @@
     for( const auto &req : _runningRequests ) {
       dlnowMulti += req->downloadedByteCount();
     }
+
+    if ( !assertExpectedFilesize( dlnowMulti ) )
+      return;
+
     stateMachine()._sigProgress.emit( *stateMachine().z_func(), _fileSize, 
dlnowMulti );
   }
 
@@ -53,6 +57,9 @@
     }
 
     _downloadedMultiByteCount += req.downloadedByteCount();
+    if ( !assertExpectedFilesize( _downloadedMultiByteCount ) ) {
+      return;
+    }
 
     MIL_MEDIA << "Request finished "<<std::endl;
     const auto &rngs = reqLocked->requestedRanges();
@@ -284,6 +291,16 @@
     if ( req->_myMirror )
       req->_myMirror->startTransfer();
   }
+ 
+  bool RangeDownloaderBaseState::assertExpectedFilesize( off_t currentFilesize 
)
+  {
+    const off_t expFSize = stateMachine()._spec.expectedFileSize();
+    if ( expFSize  > 0 && expFSize < currentFilesize ) {
+      setFailed( NetworkRequestErrorPrivate::customError( 
NetworkRequestError::ExceededMaxLen ) );
+      return false;
+    }
+    return true;
+  }
 
   /**
    * Just initialize the requests ranges from the internal blocklist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libzypp-17.28.1/zypp/zyppng/media/network/private/downloaderstates/rangedownloader_p.h
 
new/libzypp-17.28.2/zypp/zyppng/media/network/private/downloaderstates/rangedownloader_p.h
--- 
old/libzypp-17.28.1/zypp/zyppng/media/network/private/downloaderstates/rangedownloader_p.h
  2021-07-12 11:16:20.000000000 +0200
+++ 
new/libzypp-17.28.2/zypp/zyppng/media/network/private/downloaderstates/rangedownloader_p.h
  2021-08-30 10:31:32.000000000 +0200
@@ -78,6 +78,7 @@
     void handleRequestError( std::shared_ptr<Request> req, const 
zyppng::NetworkRequestError &err );
     bool addBlockRanges( std::shared_ptr<Request> req, std::vector<Block> 
&&blocks ) const;
     void addNewRequest     (std::shared_ptr<Request> req, const bool 
connectSignals = true );
+    bool assertExpectedFilesize ( off_t currentFilesize );
 
     std::vector<Block> getNextBlocks ( const std::string &urlScheme );
     std::vector<Block> getNextFailedBlocks( const std::string &urlScheme );

Reply via email to