Ticket #3789 (closed defect: fixed)
extfs: rpm helper misses CONFLICTS field
Reported by: | mooffie | Owned by: | zaytsev |
---|---|---|---|
Priority: | major | Milestone: | 4.8.21 |
Component: | mc-vfs | Version: | master |
Keywords: | Cc: | slavazanko | |
Blocked By: | Blocking: | ||
Branch state: | merged | Votes for changeset: | committed-master |
Description
The rpm helper has a typo. A fix suggested by users in #3750 and #3781 is:
-
src/vfs/extfs/helpers/rpm
a b mcrpmfs_getDesription() 89 89 mcrpmfs_getAllNeededTags() 90 90 { 91 91 supportedTags=`mcrpmfs_getSupportedTags` 92 if test "`echo supportedTags | grep -c CONFLICTS`" -eq 1; then92 if test "`echo $supportedTags | grep -c CONFLICTS`" -eq 1; then 93 93 tag_CONFLICTS="|CONFLICTS=%{CONFLICTS}" 94 94 else 95 95 tag_CONFLICTS=""
However, I suggest we remove the conditional altogether:
The conditional implies that in days past "CONFLICTS" wasn't a known tag to 'rpm', and that therefore 'rpm -qp --qf %{CONFLICTS} some_package.rpm' would raise an error -- something against which we need to protect.
But, looking in the helper's source code, we see other tags we use without protection and while I'm not familiar with 'rpm', I wonder why we assume they are "old and safe". Surely the ones we added recently (PRETRANS, ...) aren't that old.
Some other observations:
- CONFLICTS support was added in 16bf1ca415c3f7 (year 2006), without protection, by somebody with an email from redhat.com. Perhaps we may rely on his "authority"?
- The protection, together with the bug, was added in e7ed071be7f (#1590, year 2009) without explanation as part of a "total rewrite" of the script. I don't see people doing code review in that ticket.
- We're still using CONFLICTS without protection in the 'trpm' helper.
To sum it up:
Should we add a "$", or remove the conditional altogether?
Change History
comment:1 Changed 8 years ago by mooffie
- Summary changed from extfs: rpm helped misses CONFLICTS field to extfs: rpm helper misses CONFLICTS field
comment:2 Changed 8 years ago by zaytsev
- Cc slavazanko added
As far as I know, "Conflicts" fields was introduced in RPM circa. 1996, so it's hard for me to imagine that there is some version out there that doesn't support it. I could hypothesize that some versions could crash if this field is not present in the archive or something, but honestly it's hard to know what Slava was thinking back then. Maybe he can elaborate himself?
I would favor rewriting mcrpmfs_getAllNeededTags to add checks for all fields just in case by constructing query format it a loop, but probably it's too annoying in shell :-( Removing the check altogether is the next best option.
comment:3 Changed 7 years ago by zaytsev
- Milestone changed from 4.8.20 to 4.8.21
I think we should just remove the conditional :)
comment:5 Changed 7 years ago by zaytsev
- Status changed from accepted to testing
- Votes for changeset set to committed-master
- Resolution set to fixed
- Branch state changed from no branch to merged
Committed to master: b44bfee6bf04ad2aa3742db00f8775895820c4f3 as agreed with andrew_b.