tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg_order() oddity



As part of my work on my Rust library for pkgsrc[0], I came across what I thought was a bit of an oddity in pkg_install's pkg_order().

For the uninitiated, this returns the "best" match for a pattern given two options. In all situations where a version number is included, this will return the higher version number.

However, in the case of either a tie, or no version number, it will return the lexicographically _smaller_ of the two, as per this commit:

  https://github.com/NetBSD/pkgsrc/commit/3ce4880b5cfb35be79f75178decd0d596d1bde39

For example:

  pkg_order("{foo,bar}-[0-9]*", "foo-1.0", "bar-1.1")  =>  bar-1.1
  pkg_order("{foo,bar}-[0-9]*", "foo-1.1", "bar-1.0")  =>  foo-1.1

but:

  pkg_order("{foo,bar}-[0-9]*", "foo-1.0", "bar-1.0")  =>  bar-1.0

This strikes me as odd, especially as in all cases where version numbers are compared lexicographically, we always return the larger char value.

Now, in the real world this makes little practical difference, and of course nobody should be relying on this behaviour, but I thought I'd just check and perhaps add a better comment than the one I currently have to explain why it is this way.

Historical perspective appreciated!

Thanks,

[0]: https://github.com/jperkin/pkgsrc-rs/commit/8fd3f48aae8b93a9987cd7265ed75d2099e25642

--
Jonathan Perkin   -   mnx.io   -   pkgsrc.smartos.org
Open Source Complete Cloud   www.tritondatacenter.com


Home | Main Index | Thread Index | Old Index