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-06-06 22:35:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libzypp (Old) and /work/SRC/openSUSE:Factory/.libzypp.new.19631 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libzypp" Fri Jun 6 22:35:26 2025 rev:515 rq:1282855 version:17.37.4 Changes: -------- --- /work/SRC/openSUSE:Factory/libzypp/libzypp.changes 2025-06-03 17:51:39.400920368 +0200 +++ /work/SRC/openSUSE:Factory/.libzypp.new.19631/libzypp.changes 2025-06-06 22:36:55.281548658 +0200 @@ -1,0 +2,8 @@ +Wed Jun 4 17:44:37 CEST 2025 - m...@suse.de + +- RepoInfo: use pathNameSetTrailingSlash (fixes #643) +- Fix wrong userdata parameter type when running zypp with debug + verbosity (bsc#1239012) +- version 17.37.4 (35) + +------------------------------------------------------------------- Old: ---- libzypp-17.37.3.tar.bz2 New: ---- libzypp-17.37.4.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libzypp.spec ++++++ --- /var/tmp/diff_new_pack.PbMibY/_old 2025-06-06 22:37:01.633811883 +0200 +++ /var/tmp/diff_new_pack.PbMibY/_new 2025-06-06 22:37:01.633811883 +0200 @@ -70,7 +70,7 @@ %endif Name: libzypp -Version: 17.37.3 +Version: 17.37.4 Release: 0 License: GPL-2.0-or-later URL: https://github.com/openSUSE/libzypp ++++++ libzypp-17.37.3.tar.bz2 -> libzypp-17.37.4.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.3/VERSION.cmake new/libzypp-17.37.4/VERSION.cmake --- old/libzypp-17.37.3/VERSION.cmake 2025-06-02 17:52:37.000000000 +0200 +++ new/libzypp-17.37.4/VERSION.cmake 2025-06-04 17:45:32.000000000 +0200 @@ -61,8 +61,8 @@ SET(LIBZYPP_MAJOR "17") SET(LIBZYPP_COMPATMINOR "35") SET(LIBZYPP_MINOR "37") -SET(LIBZYPP_PATCH "3") +SET(LIBZYPP_PATCH "4") # -# LAST RELEASED: 17.37.3 (35) +# LAST RELEASED: 17.37.4 (35) # (The number in parenthesis is LIBZYPP_COMPATMINOR) #======= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.3/package/libzypp.changes new/libzypp-17.37.4/package/libzypp.changes --- old/libzypp-17.37.3/package/libzypp.changes 2025-06-02 17:52:37.000000000 +0200 +++ new/libzypp-17.37.4/package/libzypp.changes 2025-06-04 17:45:32.000000000 +0200 @@ -1,4 +1,12 @@ ------------------------------------------------------------------- +Wed Jun 4 17:44:37 CEST 2025 - m...@suse.de + +- RepoInfo: use pathNameSetTrailingSlash (fixes #643) +- Fix wrong userdata parameter type when running zypp with debug + verbosity (bsc#1239012) +- version 17.37.4 (35) + +------------------------------------------------------------------- Mon Jun 2 17:50:53 CEST 2025 - m...@suse.de - Do not warn about no mirrors if mirrorlist was switched on diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.3/tests/zypp/Url_test.cc new/libzypp-17.37.4/tests/zypp/Url_test.cc --- old/libzypp-17.37.3/tests/zypp/Url_test.cc 2025-03-14 17:00:09.000000000 +0100 +++ new/libzypp-17.37.4/tests/zypp/Url_test.cc 2025-06-04 17:30:09.000000000 +0200 @@ -389,4 +389,25 @@ BOOST_CHECK_EQUAL( appendPathName( u, "../ba a" ), "ftp://host/%2Fba%20a" ); } +BOOST_AUTO_TEST_CASE(pathNameSetTrailingSlash) +{ + auto apply = []( const std::string & url_r, bool apply_r ) -> std::string { + Url u { url_r }; + u.pathNameSetTrailingSlash( apply_r ); + return u.getPathName(); + }; + BOOST_CHECK_EQUAL( apply( "http://HOST", true ), "" ); + BOOST_CHECK_EQUAL( apply( "http://HOST", false ), "" ); + BOOST_CHECK_EQUAL( apply( "http://HOST/", true ), "/" ); + BOOST_CHECK_EQUAL( apply( "http://HOST/", false ), "/" ); + BOOST_CHECK_EQUAL( apply( "http://HOST//", true ), "//" ); + BOOST_CHECK_EQUAL( apply( "http://HOST//", false ), "//" ); + BOOST_CHECK_EQUAL( apply( "http://HOST//foo", true ), "//foo/" ); + BOOST_CHECK_EQUAL( apply( "http://HOST//foo", false ), "//foo" ); + BOOST_CHECK_EQUAL( apply( "http://HOST//foo/", true ), "//foo/" ); + BOOST_CHECK_EQUAL( apply( "http://HOST//foo/", false ), "//foo" ); + BOOST_CHECK_EQUAL( apply( "http://HOST//foo//", true ), "//foo//" ); + BOOST_CHECK_EQUAL( apply( "http://HOST//foo//", false ), "//foo" ); +} + // vim: set ts=2 sts=2 sw=2 ai et: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.3/zypp/RepoInfo.cc new/libzypp-17.37.4/zypp/RepoInfo.cc --- old/libzypp-17.37.3/zypp/RepoInfo.cc 2025-06-02 17:30:08.000000000 +0200 +++ new/libzypp-17.37.4/zypp/RepoInfo.cc 2025-06-04 17:30:09.000000000 +0200 @@ -186,7 +186,7 @@ && repo::RepoMirrorList::urlSupportsMirrorLink( *_baseUrls.transformedBegin() ) ) { mlurl = *_baseUrls.transformedBegin (); - mlurl.appendPathName("/"); + mlurl.pathNameSetTrailingSlash(); mlurl.setQueryParam("mirrorlist", std::string() ); MIL << "Detected opensuse.org baseUrl with no mirrors, requesting them from : " << mlurl.asString() << std::endl; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.3/zypp/target/commitpackagepreloader.cc new/libzypp-17.37.4/zypp/target/commitpackagepreloader.cc --- old/libzypp-17.37.3/zypp/target/commitpackagepreloader.cc 2025-06-02 17:30:08.000000000 +0200 +++ new/libzypp-17.37.4/zypp/target/commitpackagepreloader.cc 2025-06-04 13:00:11.000000000 +0200 @@ -354,7 +354,7 @@ callback::UserData userData( "CommitPreloadReport/fileDone" ); if ( url ) - userData.set( "Url", url ); + userData.set( "Url", *url ); if ( errorMessage ) userData.set( "description", *errorMessage ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.3/zypp-common/KeyManager.cc new/libzypp-17.37.4/zypp-common/KeyManager.cc --- old/libzypp-17.37.3/zypp-common/KeyManager.cc 2025-01-28 15:20:09.000000000 +0100 +++ new/libzypp-17.37.4/zypp-common/KeyManager.cc 2025-06-04 14:40:11.000000000 +0200 @@ -6,6 +6,7 @@ | /_____||_| |_| |_| | | | \---------------------------------------------------------------------*/ +#include <iostream> #include "KeyManager.h" #include "KeyRingException.h" @@ -92,6 +93,48 @@ // In V.1.11: str << " " << obj.skipped_v3_keys << " skipped v3 keys." << endl; return str << "}"; } + + std::ostream & operator<<( std::ostream & str, const gpgme_sigsum_t & obj ) + { + str << ((int)obj&(int)0xffff) << ":"; +#define OSC(V) if ( V & (unsigned)obj ) str << " " << #V; + OSC(GPGME_SIGSUM_VALID ); + OSC(GPGME_SIGSUM_GREEN ); + OSC(GPGME_SIGSUM_RED ); + OSC(GPGME_SIGSUM_KEY_REVOKED ); + OSC(GPGME_SIGSUM_KEY_EXPIRED ); + OSC(GPGME_SIGSUM_SIG_EXPIRED ); + OSC(GPGME_SIGSUM_KEY_MISSING ); + OSC(GPGME_SIGSUM_CRL_MISSING ); + OSC(GPGME_SIGSUM_CRL_TOO_OLD ); + OSC(GPGME_SIGSUM_BAD_POLICY ); + OSC(GPGME_SIGSUM_SYS_ERROR ); + OSC(GPGME_SIGSUM_TOFU_CONFLICT); +#undef OSC + return str; + } + + std::ostream & operator<<( std::ostream & str, const gpgme_signature_t & obj ) + { + str << "gpgme_signature_t " << (void *)obj << " {" << endl; + str << " next: " << (void *)obj->next << endl; + str << " summary: " << obj->summary << endl; + str << " fpr: " << obj->fpr << endl; + str << " status: " << obj->status << " " << GpgmeErr(obj->status) << endl; + str << " timestamp: " << obj->timestamp << endl; + str << " exp_timestamp: " << obj->exp_timestamp << endl; + str << " wrong_key_usage: " << obj->wrong_key_usage << endl; + str << " pka_trust: " << obj->pka_trust << endl; + str << " chain_model: " << obj->chain_model << endl; + str << " is_de_vs: " << obj->is_de_vs << endl; + str << " validity: " << obj->validity << endl; + str << " validity_reason: " << obj->validity_reason << " " << GpgmeErr(obj->validity_reason) << endl; + str << " pubkey_algo: " << obj->pubkey_algo << endl; + str << " hash_algo: " << obj->hash_algo << endl; + str << " pka_address: " << (obj->pka_address ? obj->pka_address : "") << endl; + return str; + } + } // namespace /////////////////////////////////////////////////////////////////// @@ -225,7 +268,7 @@ bool foundGoodSignature = false; std::list<std::string> signatures; for ( gpgme_signature_t sig = res->signatures; sig; sig = sig->next ) { - + //DBG << "- " << sig << std::endl; if ( sig->fpr ) { // bsc#1100427: With libgpgme11-1.11.0 and if a recent gpg version was used @@ -311,7 +354,13 @@ if ( err != GPG_ERR_NO_ERROR ) ZYPP_THROW( GpgmeException( "gpgme_ctx_set_engine_info", err ) ); } - +#if 0 + DBG << "createForOpenPGP {" << endl; + for ( const auto & key : ret.listKeys() ) { + DBG << " " << key << endl; + } + DBG << "}" << endl; +#endif return ret; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.3/zypp-core/Url.cc new/libzypp-17.37.4/zypp-core/Url.cc --- old/libzypp-17.37.3/zypp-core/Url.cc 2025-03-14 17:00:09.000000000 +0100 +++ new/libzypp-17.37.4/zypp-core/Url.cc 2025-06-04 17:30:09.000000000 +0200 @@ -826,6 +826,22 @@ } } + void Url::pathNameSetTrailingSlash( bool apply_r ) + { + std::string upath { getPathName( url::E_DECODED ) }; + if ( upath.empty() || upath == "/" || upath == "//" ) + return; + if ( str::endsWith( upath, "/" ) == apply_r ) + return; + + if ( apply_r ) { + setPathName( upath+"/", url::E_DECODED ); + } else { + do { upath.pop_back(); } while ( str::endsWith( upath, "/" ) ); + setPathName( upath, url::E_DECODED ); + } + } + // ----------------------------------------------------------------- void Url::setPathParams(const std::string ¶ms) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-17.37.3/zypp-core/Url.h new/libzypp-17.37.4/zypp-core/Url.h --- old/libzypp-17.37.3/zypp-core/Url.h 2024-12-10 14:30:12.000000000 +0100 +++ new/libzypp-17.37.4/zypp-core/Url.h 2025-06-04 17:30:09.000000000 +0200 @@ -714,6 +714,11 @@ */ void appendPathName( const Pathname & path_r, EEncoding eflag_r = zypp::url::E_DECODED ); + /** \brief Apply or remove a trailing '/' from \ref pathName. + * If the current \ref pathName is empty or \c / it remains unchanged. + */ + void pathNameSetTrailingSlash( bool apply_r = true ); + /** * \brief Set the path parameters. * \param params The new encoded path parameter string.