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.
This commit is contained in:
Juan RP
2020-01-04 13:01:28 +01:00
parent d68ff7ebf0
commit 10075c28e5
2 changed files with 63 additions and 1 deletions

View File

@ -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 */