On Wed, 2007-08-29 at 23:41 +0300, Ville Skyttä wrote:
I mentioned to you in private mail that the "or" in
"GPL+ or Artistic"
will cause problems in rpmlint with its current implementation of the
license tag check. When "GPL+ or Artistic" used alone, it works
because that string is in the license list as is and thus no splitting
will occur. But when combined with anything else (or even put in
parenthesis), it no longer works as intended because the special case
is no longer found as is, and thus will be split at "or" and the split
parts are checked separately.
OK. Not sure how I missed this, but I've been wildly multi-tasking
lately.
The only way I think we can sanely handle this case is like this:
A. Does the License Tag string match an entry in the License list?
[Yes] Stop, its fine.
[No] Goto B.
B. Does the License Tag have any parenthesis in it?
[Yes] Goto C.
[No] Goto D.
C. Find parenthesis wrapped strings, make them into substrings. For each
substring, goto D.
D. Parse string through regex. Does each remaining item (things not
regexed to /dev/null) match an entry in the License list?
[Yes] Do nothing, keep looking until we're out of strings.
[No] Print out the non-matching item. Keep looking until we're out of
strings.
Anyone want to take a crack at coding that in python? (Or propose a
better method?)
By the way, "GPLv2+ or Artistic" is not in the license list
in Wiki
nor thus in rpmlint.
Ahh. I'll fix that right now.
~spot