Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libdnf for openSUSE:Factory checked 
in at 2024-02-23 16:41:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libdnf (Old)
 and      /work/SRC/openSUSE:Factory/.libdnf.new.1770 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libdnf"

Fri Feb 23 16:41:08 2024 rev:36 rq:1149215 version:0.73.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libdnf/libdnf.changes    2023-11-05 
12:19:26.722570964 +0100
+++ /work/SRC/openSUSE:Factory/.libdnf.new.1770/libdnf.changes  2024-02-23 
16:41:16.158506431 +0100
@@ -1,0 +2,12 @@
+Thu Feb 15 08:42:33 UTC 2024 - [email protected]
+
+- version update to 0.73.0
+  * Major changes:
+  * filelists metadata not loaded by default
+  * deltarpm disabled by default
+  * New features:
+  * conf: Introduce new optional_metadata_types option to load
+    filelists on demand
+  * goal: Method for detecting file dependency problems
+
+-------------------------------------------------------------------

Old:
----
  libdnf-0.72.0.tar.gz

New:
----
  libdnf-0.73.0.tar.gz

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

Other differences:
------------------
++++++ libdnf.spec ++++++
--- /var/tmp/diff_new_pack.yZcJKK/_old  2024-02-23 16:41:16.902533402 +0100
+++ /var/tmp/diff_new_pack.yZcJKK/_new  2024-02-23 16:41:16.906533547 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libdnf
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 # Copyright (c) 2023 Neal Gompa <[email protected]>.
 #
 # All modifications and additions to the file contributed by third parties
@@ -34,7 +34,7 @@
 %define devname %{name}-devel
 
 Name:           libdnf
-Version:        0.72.0
+Version:        0.73.0
 Release:        0
 Summary:        Library providing C and Python APIs atop libsolv
 License:        LGPL-2.1-or-later

++++++ libdnf-0.72.0.tar.gz -> libdnf-0.73.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/.packit.yaml 
new/libdnf-0.73.0/.packit.yaml
--- old/libdnf-0.72.0/.packit.yaml      1970-01-01 01:00:00.000000000 +0100
+++ new/libdnf-0.73.0/.packit.yaml      2024-02-08 15:39:11.000000000 +0100
@@ -0,0 +1,10 @@
+# See the documentation for more information:
+# https://packit.dev/docs/configuration/
+
+specfile_path: libdnf.spec
+
+jobs:
+  - job: copr_build
+    trigger: pull_request
+    targets:
+      - fedora-all
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/.pre-commit-config.yaml 
new/libdnf-0.73.0/.pre-commit-config.yaml
--- old/libdnf-0.72.0/.pre-commit-config.yaml   1970-01-01 01:00:00.000000000 
+0100
+++ new/libdnf-0.73.0/.pre-commit-config.yaml   2024-02-08 15:39:11.000000000 
+0100
@@ -0,0 +1,13 @@
+# See https://pre-commit.com for more information
+# See https://pre-commit.com/hooks.html for more hooks
+repos:
+- repo: https://github.com/rpm-software-management/rpmlint.git
+  rev: 2.5.0
+  hooks:
+  - id: rpmlint
+    files: ^libdnf\.spec$
+  # Passes if packit not installed. Needed for validation locally
+- repo: https://github.com/packit/pre-commit-hooks
+  rev: v1.2.0
+  hooks:
+  - id: validate-config
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/VERSION.cmake 
new/libdnf-0.73.0/VERSION.cmake
--- old/libdnf-0.72.0/VERSION.cmake     2023-10-18 12:29:49.000000000 +0200
+++ new/libdnf-0.73.0/VERSION.cmake     2024-02-08 15:39:11.000000000 +0100
@@ -1,5 +1,5 @@
 set (DEFAULT_LIBDNF_MAJOR_VERSION 0)
-set (DEFAULT_LIBDNF_MINOR_VERSION 72)
+set (DEFAULT_LIBDNF_MINOR_VERSION 73)
 set (DEFAULT_LIBDNF_MICRO_VERSION 0)
 
 if(DEFINED LIBDNF_MAJOR_VERSION)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/docs/release_notes.rst 
new/libdnf-0.73.0/docs/release_notes.rst
--- old/libdnf-0.72.0/docs/release_notes.rst    2023-10-18 12:29:49.000000000 
+0200
+++ new/libdnf-0.73.0/docs/release_notes.rst    2024-02-08 15:39:11.000000000 
+0100
@@ -20,6 +20,23 @@
 ######################
 
 ====================
+0.73.0 Release Notes
+====================
+
+- Major changes:
+  - filelists metadata not loaded by default
+  - deltarpm disabled by default
+
+- New features:
+  - conf: Introduce new optional_metadata_types option to load filelists on 
demand
+  - goal: Method for detecting file dependency problems
+
+Bugs fixed in 0.73.0:
+
+* :rhbug:`2252128`
+* :rhbug:`2254789`
+
+====================
 0.72.0 Release Notes
 ====================
 
@@ -31,24 +48,22 @@
 - Bug fixes:
   - Avoid reinstalling installonly packages marked for ERASE (RhBug:2163474)
   - transaction: Save the reason for installing (RhBug:1733274)
+  - hawkey.subject: get_best_selectors only obsoleters of latest 
(RhBug:2183279,2176263)
 
 - Others:
+  - Allow DNF to be removed by DNF 5 (RhBug:2221907)
   - Include dist-info for python3-libdnf
+  - bindings: Load all modules with RTLD_GLOBAL
+  - Update translations
 
 Bugs fixed in 0.72.0:
 
 * :rhbug:`2163474`
 * :rhbug:`1733274`
+* :rhbug:`2183279`
+* :rhbug:`2176263`
 * :rhbug:`1789346`
-
-====================
-0.71.1 Release Notes
-====================
-
-- New features:
-  - Allow DNF to be removed by DNF 5
-
-Bugs fixed in 0.71.1:
+* :rhbug:`2221907`
 
 ====================
 0.71.0 Release Notes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/libdnf/conf/ConfigMain.cpp 
new/libdnf-0.73.0/libdnf/conf/ConfigMain.cpp
--- old/libdnf-0.72.0/libdnf/conf/ConfigMain.cpp        2023-10-18 
12:29:49.000000000 +0200
+++ new/libdnf-0.73.0/libdnf/conf/ConfigMain.cpp        2024-02-08 
15:39:11.000000000 +0100
@@ -191,6 +191,7 @@
     OptionBool debug_solver{false};
     OptionStringList installonlypkgs{INSTALLONLYPKGS};
     OptionStringList group_package_types{GROUP_PACKAGE_TYPES};
+    OptionStringList optional_metadata_types{std::vector<std::string>{}};
 
     OptionNumber<std::uint32_t> installonly_limit{3, 0,
         [](const std::string & value)->std::uint32_t{
@@ -360,7 +361,7 @@
     OptionBool proxy_sslverify{true};
     OptionString proxy_sslclientcert{""};
     OptionString proxy_sslclientkey{""};
-    OptionBool deltarpm{true};
+    OptionBool deltarpm{false};
     OptionNumber<std::uint32_t> deltarpm_percentage{75};
     OptionBool skip_if_unavailable{false};
     OptionBool sslverifystatus{false};
@@ -399,6 +400,7 @@
     );
 
     owner.optBinds().add("group_package_types", group_package_types);
+    owner.optBinds().add("optional_metadata_types", optional_metadata_types);
     owner.optBinds().add("installonly_limit", installonly_limit);
 
     owner.optBinds().add("tsflags", tsflags,
@@ -564,6 +566,7 @@
 OptionBool & ConfigMain::debug_solver() { return pImpl->debug_solver; }
 OptionStringList & ConfigMain::installonlypkgs() { return 
pImpl->installonlypkgs; }
 OptionStringList & ConfigMain::group_package_types() { return 
pImpl->group_package_types; }
+OptionStringList & ConfigMain::optional_metadata_types() { return 
pImpl->optional_metadata_types; }
 OptionNumber<std::uint32_t> & ConfigMain::installonly_limit() { return 
pImpl->installonly_limit; }
 OptionStringList & ConfigMain::tsflags() { return pImpl->tsflags; }
 OptionBool & ConfigMain::assumeyes() { return pImpl->assumeyes; }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/libdnf/conf/ConfigMain.hpp 
new/libdnf-0.73.0/libdnf/conf/ConfigMain.hpp
--- old/libdnf-0.72.0/libdnf/conf/ConfigMain.hpp        2023-10-18 
12:29:49.000000000 +0200
+++ new/libdnf-0.73.0/libdnf/conf/ConfigMain.hpp        2024-02-08 
15:39:11.000000000 +0100
@@ -72,6 +72,7 @@
     OptionBool & debug_solver();
     OptionStringList & installonlypkgs();
     OptionStringList & group_package_types();
+    OptionStringList & optional_metadata_types();
 
     /*  NOTE: If you set this to 2, then because it keeps the current
     kernel it means if you ever install an "old" kernel it'll get rid
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/libdnf/dnf-context.cpp 
new/libdnf-0.73.0/libdnf/dnf-context.cpp
--- old/libdnf-0.72.0/libdnf/dnf-context.cpp    2023-10-18 12:29:49.000000000 
+0200
+++ new/libdnf-0.73.0/libdnf/dnf-context.cpp    2024-02-08 15:39:11.000000000 
+0100
@@ -162,7 +162,7 @@
     gboolean         check_disk_space;
     gboolean         check_transaction;
     gboolean         only_trusted;
-    gboolean         enable_filelists;
+    gboolean         *enable_filelists;
     gboolean         enrollment_valid;
     gboolean         write_history;
     DnfLock         *lock;
@@ -252,6 +252,7 @@
     g_free(priv->http_proxy);
     g_free(priv->user_agent);
     g_free(priv->arch);
+    g_free(priv->enable_filelists);
     g_strfreev(priv->native_arches);
     g_object_unref(priv->lock);
     g_object_unref(priv->state);
@@ -364,7 +365,6 @@
     priv->install_root = g_strdup("/");
     priv->check_disk_space = TRUE;
     priv->check_transaction = TRUE;
-    priv->enable_filelists = TRUE;
     priv->write_history = TRUE;
     priv->state = dnf_state_new();
     priv->lock = dnf_lock_new();
@@ -1086,7 +1086,15 @@
 dnf_context_get_enable_filelists (DnfContext     *context)
 {
     DnfContextPrivate *priv = GET_PRIVATE(context);
-    return priv->enable_filelists;
+    if (priv->enable_filelists == NULL) {
+        priv->enable_filelists = g_new(gboolean, 1);
+
+        auto & optional_metadata_types = 
libdnf::getGlobalMainConfig(false).optional_metadata_types().getValue();
+        *priv->enable_filelists = std::find(optional_metadata_types.begin(),
+                                            optional_metadata_types.end(),
+                                            "filelists") != 
optional_metadata_types.end();
+    }
+    return *priv->enable_filelists;
 }
 
 /**
@@ -1567,7 +1575,10 @@
                                   gboolean        enable_filelists)
 {
     DnfContextPrivate *priv = GET_PRIVATE(context);
-    priv->enable_filelists = enable_filelists;
+    if (priv->enable_filelists == NULL) {
+        priv->enable_filelists = g_new(gboolean, 1);
+    }
+    *priv->enable_filelists = enable_filelists;
 }
 
 /**
@@ -1824,7 +1835,7 @@
     DnfSackAddFlags add_flags = DNF_SACK_ADD_FLAG_NONE;
     if ((flags & DNF_CONTEXT_SETUP_SACK_FLAG_LOAD_UPDATEINFO) > 0)
         add_flags = static_cast<DnfSackAddFlags>(add_flags | 
DNF_SACK_ADD_FLAG_UPDATEINFO);
-    if (priv->enable_filelists && !((flags & 
DNF_CONTEXT_SETUP_SACK_FLAG_SKIP_FILELISTS) > 0))
+    if (dnf_context_get_enable_filelists(context) && !((flags & 
DNF_CONTEXT_SETUP_SACK_FLAG_SKIP_FILELISTS) > 0))
         add_flags = static_cast<DnfSackAddFlags>(add_flags | 
DNF_SACK_ADD_FLAG_FILELISTS);
 
     /* add remote */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/libdnf/goal/Goal-private.hpp 
new/libdnf-0.73.0/libdnf/goal/Goal-private.hpp
--- old/libdnf-0.72.0/libdnf/goal/Goal-private.hpp      2023-10-18 
12:29:49.000000000 +0200
+++ new/libdnf-0.73.0/libdnf/goal/Goal-private.hpp      2024-02-08 
15:39:11.000000000 +0100
@@ -59,6 +59,8 @@
     std::string describeProtectedRemoval();
     std::unique_ptr<PackageSet> brokenDependencyAllPkgs(DnfPackageState 
pkg_type);
     int countProblems();
+    bool isBrokenFileDependencyPresent();
+    bool isBrokenFileDependencyPresent(unsigned i);
 };
 
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/libdnf/goal/Goal.cpp 
new/libdnf-0.73.0/libdnf/goal/Goal.cpp
--- old/libdnf-0.72.0/libdnf/goal/Goal.cpp      2023-10-18 12:29:49.000000000 
+0200
+++ new/libdnf-0.73.0/libdnf/goal/Goal.cpp      2024-02-08 15:39:11.000000000 
+0100
@@ -1142,6 +1142,49 @@
     return output;
 }
 
+bool
+Goal::isBrokenFileDependencyPresent()
+{
+    return pImpl->isBrokenFileDependencyPresent();
+}
+
+bool
+Goal::Impl::isBrokenFileDependencyPresent()
+{
+    for (int i = 0; i < countProblems(); i++) {
+        if (isBrokenFileDependencyPresent(i)) {
+            return true;
+        }
+    }
+    return false;
+}
+
+bool
+Goal::Impl::isBrokenFileDependencyPresent(unsigned i)
+{
+    if (i >= solver_problem_count(solv)) {
+        return false;
+    }
+
+    SolverRuleinfo type;
+    Id source, target, dep;
+    IdQueue pq;
+    Pool * const pool = solv->pool;
+
+    // this libsolv interface indexes from 1 (we do from 0), so:
+    solver_findallproblemrules(solv, i+1, pq.getQueue());
+    for (int j = 0; j < pq.size(); j++) {
+        type = solver_ruleinfo(solv, pq[j], &source, &target, &dep);
+        if (type == SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP) {
+            auto dependency = std::string(pool_dep2str(pool, dep));
+            if (dependency.at(0) == '/') {
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
 /**
  * Write all the solving decisions to the hawkey logfile.
  */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/libdnf/goal/Goal.hpp 
new/libdnf-0.73.0/libdnf/goal/Goal.hpp
--- old/libdnf-0.72.0/libdnf/goal/Goal.hpp      2023-10-18 12:29:49.000000000 
+0200
+++ new/libdnf-0.73.0/libdnf/goal/Goal.hpp      2024-02-08 15:39:11.000000000 
+0100
@@ -124,6 +124,11 @@
     std::vector<std::vector<std::string>> describeAllProblemRules(bool pkgs);
 
     /**
+    * @brief Check if any solver resolution problem is a file dependency issue
+    */
+    bool isBrokenFileDependencyPresent();
+
+    /**
     * @brief List describing failed rules in solving problem 'i'. Caller is 
responsible for freeing the
     * returned string list by g_free().
     *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/libdnf/repo/Repo.cpp 
new/libdnf-0.73.0/libdnf/repo/Repo.cpp
--- old/libdnf-0.72.0/libdnf/repo/Repo.cpp      2023-10-18 12:29:49.000000000 
+0200
+++ new/libdnf-0.73.0/libdnf/repo/Repo.cpp      2024-02-08 15:39:11.000000000 
+0100
@@ -432,12 +432,18 @@
 std::unique_ptr<LrHandle> Repo::Impl::lrHandleInitBase()
 {
     std::unique_ptr<LrHandle> h(lr_handle_init());
-    std::vector<const char *> dlist = {MD_TYPE_PRIMARY, MD_TYPE_FILELISTS, 
MD_TYPE_PRESTODELTA,
-        MD_TYPE_GROUP_GZ, MD_TYPE_UPDATEINFO};
+    std::vector<const char *> dlist = {MD_TYPE_PRIMARY, MD_TYPE_PRESTODELTA, 
MD_TYPE_GROUP_GZ, MD_TYPE_UPDATEINFO};
+
+    auto & optionalMetadataTypes = 
conf->getMainConfig().optional_metadata_types().getValue();
+    auto loadFilelists = std::find(optionalMetadataTypes.begin(), 
optionalMetadataTypes.end(), "filelists") !=
+                         optionalMetadataTypes.end();
 
 #ifdef MODULEMD
     dlist.push_back(MD_TYPE_MODULES);
 #endif
+    if (loadFilelists) {
+        dlist.push_back(MD_TYPE_FILELISTS);
+    }
     if (loadMetadataOther) {
         dlist.push_back(MD_TYPE_OTHER);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/libdnf.spec 
new/libdnf-0.73.0/libdnf.spec
--- old/libdnf-0.72.0/libdnf.spec       2023-10-18 12:29:49.000000000 +0200
+++ new/libdnf-0.73.0/libdnf.spec       2024-02-08 15:39:11.000000000 +0100
@@ -4,7 +4,7 @@
 %global dnf_conflict 4.11.0
 %global swig_version 3.0.12
 %global libdnf_major_version 0
-%global libdnf_minor_version 72
+%global libdnf_minor_version 73
 %global libdnf_micro_version 0
 
 %define __cmake_in_source_build 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libdnf-0.72.0/python/hawkey/goal-py.cpp 
new/libdnf-0.73.0/python/hawkey/goal-py.cpp
--- old/libdnf-0.72.0/python/hawkey/goal-py.cpp 2023-10-18 12:29:49.000000000 
+0200
+++ new/libdnf-0.73.0/python/hawkey/goal-py.cpp 2024-02-08 15:39:11.000000000 
+0100
@@ -479,6 +479,12 @@
 } CATCH_TO_PYTHON
 
 static PyObject *
+file_dep_problem_present(_GoalObject *self, PyObject *unused) try
+{
+    return PyBool_FromLong(self->goal->isBrokenFileDependencyPresent());
+} CATCH_TO_PYTHON
+
+static PyObject *
 log_decisions(_GoalObject *self, PyObject *unused) try
 {
     if (hy_goal_log_decisions(self->goal))
@@ -652,6 +658,7 @@
     {"problem_conflicts",(PyCFunction)problem_conflicts,        METH_VARARGS | 
METH_KEYWORDS,                NULL},
     {"problem_broken_dependency",(PyCFunction)problem_broken_dependency,       
 METH_VARARGS | METH_KEYWORDS,                NULL},
     {"problem_rules", (PyCFunction)problem_rules,        METH_NOARGS,          
      NULL},
+    {"file_dep_problem_present", (PyCFunction)file_dep_problem_present,        
METH_NOARGS,        NULL},
     {"log_decisions",   (PyCFunction)log_decisions,        METH_NOARGS,        
NULL},
     {"write_debugdata", (PyCFunction)write_debugdata,        METH_O,           
     NULL},
     {"list_erasures",        (PyCFunction)list_erasures,        METH_NOARGS,   
     NULL},

Reply via email to