Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libzypp for openSUSE:Factory checked in at 2025-08-03 13:36:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libzypp (Old) and /work/SRC/openSUSE:Factory/.libzypp.new.1085 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libzypp" Sun Aug 3 13:36:05 2025 rev:522 rq:1296899 version:17.37.15 Changes: -------- --- /work/SRC/openSUSE:Factory/libzypp/libzypp.changes 2025-07-24 18:46:15.191457646 +0200 +++ /work/SRC/openSUSE:Factory/.libzypp.new.1085/libzypp.changes 2025-08-03 13:36:36.089437262 +0200 @@ -1,0 +2,7 @@ +Thu Jul 31 17:01:53 CEST 2025 - m...@suse.de + +- Append RepoInfo::path() to the mirror URLs in Preloader + (bsc#1247054) +- version 17.37.15 (35) + +------------------------------------------------------------------- Old: ---- libzypp-17.37.14.tar.bz2 New: ---- libzypp-17.37.15.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libzypp.spec ++++++ --- /var/tmp/diff_new_pack.XP4TA5/_old 2025-08-03 13:36:36.701462647 +0200 +++ /var/tmp/diff_new_pack.XP4TA5/_new 2025-08-03 13:36:36.701462647 +0200 @@ -72,7 +72,7 @@ %endif Name: libzypp -Version: 17.37.14 +Version: 17.37.15 Release: 0 License: GPL-2.0-or-later URL: https://github.com/openSUSE/libzypp ++++++ libzypp-17.37.14.tar.bz2 -> libzypp-17.37.15.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.14/VERSION.cmake new/libzypp-17.37.15/VERSION.cmake --- old/libzypp-17.37.14/VERSION.cmake 2025-07-23 17:13:01.000000000 +0200 +++ new/libzypp-17.37.15/VERSION.cmake 2025-07-31 17:02:41.000000000 +0200 @@ -61,8 +61,8 @@ SET(LIBZYPP_MAJOR "17") SET(LIBZYPP_COMPATMINOR "35") SET(LIBZYPP_MINOR "37") -SET(LIBZYPP_PATCH "14") +SET(LIBZYPP_PATCH "15") # -# LAST RELEASED: 17.37.14 (35) +# LAST RELEASED: 17.37.15 (35) # (The number in parenthesis is LIBZYPP_COMPATMINOR) #======= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.14/package/libzypp.changes new/libzypp-17.37.15/package/libzypp.changes --- old/libzypp-17.37.14/package/libzypp.changes 2025-07-23 17:13:01.000000000 +0200 +++ new/libzypp-17.37.15/package/libzypp.changes 2025-07-31 17:02:41.000000000 +0200 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Thu Jul 31 17:01:53 CEST 2025 - m...@suse.de + +- Append RepoInfo::path() to the mirror URLs in Preloader + (bsc#1247054) +- version 17.37.15 (35) + +------------------------------------------------------------------- Wed Jul 23 17:11:47 CEST 2025 - m...@suse.de - During installation indicate the backend being used (bsc#1246038) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.14/tests/zypp/RepoInfo_test.cc new/libzypp-17.37.15/tests/zypp/RepoInfo_test.cc --- old/libzypp-17.37.14/tests/zypp/RepoInfo_test.cc 2025-06-18 11:57:31.000000000 +0200 +++ new/libzypp-17.37.15/tests/zypp/RepoInfo_test.cc 2025-07-30 17:40:08.000000000 +0200 @@ -40,7 +40,7 @@ BOOST_CHECK_EQUAL(ri.location(), weburl); BOOST_CHECK_EQUAL(ri.url().asString(), "http://ftp-stud.hs-esslingen.de/pub/fedora/linux/updates/13/x86_64/"); - BOOST_CHECK( !ri.repoOriginsEmpty() ); + BOOST_REQUIRE( !ri.repoOriginsEmpty() ); BOOST_CHECK_EQUAL( ri.repoOrigins().begin()->authority().url().asString(), "http://ftp-stud.hs-esslingen.de/pub/fedora/linux/updates/13/x86_64/" ); std::ostringstream ostr; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.14/zypp/RepoInfo.cc new/libzypp-17.37.15/zypp/RepoInfo.cc --- old/libzypp-17.37.14/zypp/RepoInfo.cc 2025-06-18 11:57:31.000000000 +0200 +++ new/libzypp-17.37.15/zypp/RepoInfo.cc 2025-07-30 17:40:08.000000000 +0200 @@ -173,8 +173,10 @@ */ url_set &mirrorUrls() const { - if ( !_mirrorUrls.empty() - && ( std::chrono::steady_clock::now() - _lastMirrorUrlsUpdate < std::chrono::hours(1) ) ) + // do not change order of calculation, using std::chrono::steady_clock::now() - _lastMirrorUrlsUpdate + // will overflow the internal counter if _lastMirrorUrlsUpdate is still time_point::min and result + // in a negative value. + if ( ( std::chrono::steady_clock::now() - std::chrono::hours(1) ) < _lastMirrorUrlsUpdate ) return _mirrorUrls; _mirrorUrls.clear(); @@ -188,6 +190,8 @@ && repo::RepoMirrorList::urlSupportsMirrorLink( *_baseUrls.transformedBegin() ) ) { mlurl = *_baseUrls.transformedBegin (); + if ( !path.emptyOrRoot () ) + mlurl.setPathName(path); mlurl.pathNameSetTrailingSlash(); mlurl.setQueryParam("mirrorlist", std::string() ); @@ -212,6 +216,9 @@ callback::UserData data( JobReport::repoRefreshMirrorlist ); data.set("error", e ); JobReport::warning( _("Failed to fetch mirrorlist/metalink data."), data ); + + // in case of error, we want to try again asap + _lastMirrorUrlsUpdate = std::chrono::steady_clock::time_point::min(); } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.14/zypp/repo/RepoMirrorList.cc new/libzypp-17.37.15/zypp/repo/RepoMirrorList.cc --- old/libzypp-17.37.14/zypp/repo/RepoMirrorList.cc 2025-06-18 11:57:31.000000000 +0200 +++ new/libzypp-17.37.15/zypp/repo/RepoMirrorList.cc 2025-07-30 17:40:08.000000000 +0200 @@ -362,12 +362,7 @@ MIL << "Mirror cachefile cookie valid and cache is not too old, skipping download (" << cachefile << ")" << std::endl; try { _urls = RepoMirrorListParse( url_r, cachefile ); - if( _urls.empty() ) { - DBG << "Removing Cachefile as it contains no URLs" << endl; - zypp::filesystem::unlink( cachefile ); - } return; - } catch ( const zypp::Exception & e ) { ZYPP_CAUGHT(e); auto ex = e; @@ -391,11 +386,16 @@ RepoMirrorListTempProvider provider( url_r ); // RAII: lifetime of downloaded file _urls = RepoMirrorListParse( url_r, provider.localfile() ); - if ( metaPathInfo.userMayRWX() && !_urls.empty() ) { + // removed the && !_urls.empty() condition , we need to remember "no URLs" as well + // otherwise RepoInfo keeps spamming the server with requests + if ( metaPathInfo.userMayRWX() ) { // Create directory, if not existing DBG << "Copy MirrorList file to " << cachefile << endl; zypp::filesystem::assert_dir( metadatapath_r ); - zypp::filesystem::hardlinkCopy( provider.localfile(), cachefile ); + if( zypp::filesystem::hardlinkCopy( provider.localfile(), cachefile ) != 0 ) { + // remember empty file + zypp::filesystem::assert_file( cachefile ); + } saveToCookieFile ( cookiefile, url_r ); // NOTE: Now we copied the mirrorlist into the metadata directory, but // in case of refresh going on, new metadata are prepared in a sibling diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.14/zypp/target/commitpackagepreloader.cc new/libzypp-17.37.15/zypp/target/commitpackagepreloader.cc --- old/libzypp-17.37.14/zypp/target/commitpackagepreloader.cc 2025-07-07 17:40:11.000000000 +0200 +++ new/libzypp-17.37.15/zypp/target/commitpackagepreloader.cc 2025-07-30 17:40:08.000000000 +0200 @@ -95,7 +95,13 @@ _parent._requiredDls.pop_front(); auto loc = _job.lookupLocation(); - _targetPath = _job.repoInfo().predownloadPath() / _job.lookupLocation().filename(); + const auto repoInfo = _job.repoInfo(); + + _targetPath = repoInfo.predownloadPath(); + if ( !repoInfo.path().emptyOrRoot () ) { + _targetPath /= repoInfo.path(); + } + _targetPath /= loc.filename(); // select a mirror we want to use if ( !prepareMirror( ) ) { @@ -507,6 +513,9 @@ url = rewriteUrl; } + if ( !pi.repoInfo().path().emptyOrRoot() ) + url.appendPathName( pi.repoInfo().path() ); + MIL << "Adding Url: " << url << " to the mirror set" << std::endl; repoUrls.push_back( RepoUrl { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.14/zypp-media/auth/credentialmanager.cc new/libzypp-17.37.15/zypp-media/auth/credentialmanager.cc --- old/libzypp-17.37.14/zypp-media/auth/credentialmanager.cc 2025-02-11 18:40:09.000000000 +0100 +++ new/libzypp-17.37.15/zypp-media/auth/credentialmanager.cc 2025-07-31 11:30:18.000000000 +0200 @@ -136,7 +136,7 @@ void CredentialManager::Impl::init_globalCredentials() { if (_options.globalCredFilePath.empty()) - DBG << "global cred file not known"; + DBG << "global cred file not known" << endl; else if (PathInfo(_options.globalCredFilePath).isExist()) { /* list<Pathname> entries; @@ -149,7 +149,7 @@ bind(&Impl::processCredentials, this, _1)); } else - DBG << "global cred file does not exist"; + DBG << "global cred file does not exist (" << _options.globalCredFilePath << ")" << endl; _credsGlobal = _credsTmp; _credsTmp.clear(); DBG << "Got " << _credsGlobal.size() << " global records." << endl; @@ -159,7 +159,7 @@ void CredentialManager::Impl::init_userCredentials() { if (_options.userCredFilePath.empty()) - DBG << "user cred file not known"; + DBG << "user cred file not known" << endl; else if (PathInfo(_options.userCredFilePath).isExist()) { /* list<Pathname> entries; @@ -171,7 +171,7 @@ bind(&Impl::processCredentials, this, _1)); } else - DBG << "user cred file does not exist" << endl; + DBG << "user cred file does not exist (" << _options.userCredFilePath << ")" << endl; _credsUser = _credsTmp; _credsTmp.clear(); DBG << "Got " << _credsUser.size() << " user records." << endl; @@ -228,7 +228,7 @@ result = findIn(_credsUser, url, vopt); if (result) - DBG << "Found credentials for '" << url << "':" << endl << *result; + DBG << "Found credentials for '" << url << "':" << endl << *result << endl; else DBG << "No credentials for '" << url << "'" << endl;