[OE-core] [PATCH 1/1] opkg: fix remove pkg with --force-removal-of-dependent-packages failed

Hongxu Jia hongxu.jia at windriver.com
Sat Oct 11 10:33:21 UTC 2014


On 10/11/2014 06:27 PM, Paul Barker wrote:
> On 11 October 2014 11:17, Hongxu Jia <hongxu.jia at windriver.com> wrote:
>> On 10/11/2014 05:31 PM, Paul Barker wrote:
>>> Your solution looks fine but I'd prefer it to be solved a different
>>> way upstream.
>>>
>>> It should be possible to ensure that duplicates don't enter the
>>> removal queue in the first place by checking the return of
>>> pkg_vec_contains(dependent_pkgs, dep_pkg) before calling
>>> pkg_vec_insert(dependent_pkgs, dep_pkg) in opkg_remove_dependent_pkgs.
>>> This would keep the logic in opkg_remove_pkg clean.
>>
>> The pkg_vec_contains(dependent_pkgs, dep_pkg) could not work here.
>> Because 'dependent_pkgs' is not global which contains all removed pkgs.
>>
>> The checking will filter duplicated pkg.
>>
> I've attached a patch which should apply to opkg v0.2.2 to show what I intended.
>
> Thanks,
>

Here is my patch, and it could not work, I think we are doing
the same thing:

--- a/libopkg/opkg_remove.c
+++ b/libopkg/opkg_remove.c
@@ -118,8 +118,11 @@ opkg_remove_dependent_pkgs(pkg_t *pkg, 
abstract_pkg_t **dependents)
              for (a = 0; a < dep_ab_pkg->pkgs->len; a++) {
                  pkg_t *dep_pkg = dep_ab_pkg->pkgs->pkgs[a];
                  if (dep_pkg->state_status == SS_INSTALLED) {
-                    pkg_vec_insert(dependent_pkgs, dep_pkg);
-                    count++;
+                    if (!pkg_vec_contains(dependent_pkgs, dep_pkg))
+                    {
+                        pkg_vec_insert(dependent_pkgs, dep_pkg);
+                        count++;
+                    }

//Hongxu



More information about the Openembedded-core mailing list