interdep.c: fix the optimization ("due to repentancy") of a non-identical dep

compare_deps() was simply called with a wrong argument (an illegal value
for this parameter); so it returned a meaningful result only if
the compared deps were identical. (Always, since the inception in f5ed7f870a .)

Example where the dep was not optimized out:

Name: test-epoch-repentancy
Version: 1
Release: alt1

Summary: test-epoch-repentancy

License: public domain
Group: Other

Requires: %name-sub = %EVR
Requires: foo = 1-alt1

BuildArch: noarch

%description
%summary

%package sub
Summary: sub
Group: Other

Requires: foo = 0:1-alt1

%description sub
%summary

%files
%files sub

%changelog
* Wed Feb 27 2019 Ivan Zakharyaschev <imz@altlinux.org> 1-alt1
- initial build for ALT Linux Sisyphus.

(cherry picked from commit 492396b532660f4debc46e96eb306f07a3261d66)

# Conflicts:
#	build/interdep.c
This commit is contained in:
Ivan Zakharyaschev 2019-02-27 04:56:24 +03:00
parent 3cec7c6d8c
commit 4bf78baf6c

View File

@ -739,7 +739,7 @@ void pruneRDeps1(struct Req *r, Spec spec, Package pkg1, Package pkg2)
continue; continue;
if (cycle && (reqFv[i] & RPMSENSE_SENSEMASK) == RPMSENSE_EQUAL) if (cycle && (reqFv[i] & RPMSENSE_SENSEMASK) == RPMSENSE_EQUAL)
continue; continue;
dep_compare_t cmp = compare_deps(RPMTAG_REQUIRENAME, dep_compare_t cmp = compare_deps(RPMTAG_REQUIREFLAGS,
provVv[j], provFv[j], reqVv[i], reqFv[i]); provVv[j], provFv[j], reqVv[i], reqFv[i]);
if (!(cmp == DEP_ST || cmp == DEP_EQ)) if (!(cmp == DEP_ST || cmp == DEP_EQ))
continue; continue;