On Wed, Jan 6, 2021, at 17:16, Jeremy O'Brien wrote:
> Hi there,
>
> I'm looking through the pkgtools code to determine how the version
> comparison logic works, and I came across this block of code at
> /usr/libdata/perl5/OpenBSD/PackageName.pm:385:
>
> sub from_string
> {
> my ($class, $string) = @_;
> my $o = bless { deweys => [ split(/\./o, $string) ],
> suffix => '', suffix_value => 0}, $class;
> if ($o->{deweys}->[-1] =~ m/^(\d+)(rc|alpha|beta|pre|pl)(\d*)$/) {
> $o->{deweys}->[-1] = $1;
> $o->{suffix} = $2;
> $o->{suffix_value} = $3;
> }
> return $o;
> }
>
> From what I understand, this is looking for one of OpenBSD "special"
> suffixes for a given version part of a package version. This code seems
> to only match cases where the "special" portion (rc, alpha, beta etc)
> of the version sits between a required decimal on the left and an
> optional decimal on the right. Looking through the current package
> listing, I found this one:
>
> clementine-1.4.0rc1p0.tgz
>
> Given the above regex, the rc1 portion of the package name will not be
> pulled into the suffix, and I believe that (given a comparison where
> the 1.4.0 portion of the version doesn't change) a future version
> comparison with this package version will potentially be done
> alphabetically?
>
> Is this intentional? Or perhaps I'm missing something here or elsewhere
> with this code.
>
> Thank you,
> Jeremy
>
>
Nevermind; I found where the hole in my logic was:
OpenBSD::PackageName::version handles the p/v cases. Sorry for the noise!