xbps: fix xbps update with indirect broken revdeps.

Merged from master.

See 10075c28e5
This commit is contained in:
Juan RP 2020-01-04 13:10:33 +01:00
parent e334e00fd6
commit 90879abe0f
No known key found for this signature in database
GPG key ID: AF19F6CB482F9368
2 changed files with 34 additions and 1 deletions

View file

@ -0,0 +1,33 @@
commit 10075c28e5065e948cac707285681f6541759873
Author: Juan RP <xtraeme@gmail.com>
Date: Sat Jan 4 13:01:28 2020 +0100
libxbps: ignore indirect broken revdeps while updating xbps.
This fixes the long standing issue that has been a plague for
a long time.
See the test case for more information.
diff --git a/lib/transaction_ops.c b/lib/transaction_ops.c
index 3d3fc36a..03725ee3 100644
--- lib/transaction_ops.c
+++ lib/transaction_ops.c
@@ -271,6 +271,17 @@ xbps_autoupdate(struct xbps_handle *xhp)
if (rv && rv != ENOENT && rv != EEXIST && rv != ENODEV)
return -1;
}
+ /*
+ * Set XBPS_FLAG_FORCE_REMOVE_REVDEPS to ignore broken
+ * reverse dependencies in xbps_transaction_prepare().
+ *
+ * This won't skip revdeps of the xbps pkg, rather other
+ * packages in rootdir that could be broken indirectly.
+ *
+ * A sysup transaction after updating xbps should fix them
+ * again.
+ */
+ xhp->flags |= XBPS_FLAG_FORCE_REMOVE_REVDEPS;
return 1;
} else if (rv == ENOENT || rv == EEXIST || rv == ENODEV) {
/* no update */

View file

@ -1,7 +1,7 @@
# Template file for 'xbps'
pkgname=xbps
version=0.57.1
revision=6
revision=7
bootstrap=yes
build_style=configure
short_desc="XBPS package system utilities"