Date: Thu, 29 Mar 2001 01:47:45 +0200 From: Anton Berezin <tobez@tobez.org> To: "Bruce A. Mah" <bmah@freebsd.org> Cc: freebsd-ports@freebsd.org, knu@freebsd.org Subject: Re: pkg_version comparison routine Message-ID: <20010329014745.E34676@heechee.tobez.org> In-Reply-To: <200103282335.f2SNZ2526600@bmah-freebsd-0.cisco.com>; from bmah@freebsd.org on Wed, Mar 28, 2001 at 03:35:02PM -0800 References: <200103280237.f2S2bUP02277@bmah-freebsd-0.cisco.com> <20010328231956.B34676@heechee.tobez.org> <200103282335.f2SNZ2526600@bmah-freebsd-0.cisco.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Mar 28, 2001 at 03:35:02PM -0800, Bruce A. Mah wrote: > If memory serves me right, Anton Berezin wrote: > > On Tue, Mar 27, 2001 at 06:37:30PM -0800, Bruce A. Mah wrote: > > > > > I'm going to revisit an issue long overdue...the fact that the > > > algorithm used by pkg_version(1) for comparing versions doesn't work > > > in all the cases specified by the Porter's Handbook. knu tried to get > > > my attention on this issue a number of months ago, even going so far > > > as to submit some patches to fix this problem. Unfortunately I > > > dropped the ball on this, and I'm sure he's understandably annoyed at > > > me. > > > > We not just steal a little snippet from devel/p5-Sort-Versions? > > > > I believe it handles most insane possibilities. > > Hmmm. Well, for starters I didn't know this existed. I'm not sure I > understand all of it, but it looks like it handles pretty much every > case in the Porter's Handbook (plus others from our own Ports > Collection). > > What's the licensing on this thing? (pkg_version is part of the base > system now, for better or worse, so we'd need to import this code into > src/.) The usual `same as perl' thingy. I.e., either GPL or Artistic, user's choice. If necessary, I am sure it is possible to negotiate with the author, Kenneth J. Albanowski <kjahds@kjahds.com>. > Other than that the only thing that comes to mind is NIH, which I'll > freely admit to. :-) Heh. First I encountered similar code in Mandrake (!) rpm tools or something. It was GPL and it was was *horribly* twisted: sub version_compare { my ($a, $b) = @_; $a = $a.' '; $b = $b.' '; local $_; while ($a || $b) { my ($sb, $sa) = map { $1 if /^\W*\d/ ? s/^\W*0*(\d+)// : s/^\W*(\D+)// } ($b, $a); $_ = length($sa) cmp length($sb) || $sa cmp $sb and return $_; } } I needed something to compare versions, and was specifically looking for a non-GPL thingy, I looked more, and to my surprise found this old rusty module in *our* port collection. :-) Cheers, &Anton. -- May the tuna salad be with you. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010329014745.E34676>