Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect versions detected as latest (icu4c, hdf5, bullet) #168

Closed
fh-igd-mueller-roemer opened this issue Aug 27, 2024 · 2 comments
Closed
Labels
bug Something isn't working

Comments

@fh-igd-mueller-roemer
Copy link

fh-igd-mueller-roemer commented Aug 27, 2024

Project with incorrect version

For the following projects / URLs, lastversion emits unexpected latest versions:

To Reproduce

Call lastversion with the respective URLs.

Expected behavior

  • lastversion https://github.com/unicode-org/icu
    • expected: 75.1 corresponding to tag release-75-1, released Apr. 16 2024
    • received: 2023.10.4 corresponding to tag brs/2023-10-04 which, AFAICT, does not have a release at all
  • lastversion https://github.com/HDFGroup/hdf5
    • expected: 1.14.4.3 corresponding to tag hdf5_1.14.4.3
    • received: 5.1.14.4.3 corresponding to tag hdf5_1.14.4.3
  • lastversion https://github.com/bulletphysics/bullet3
    • expected: 3.25 corresponding to tag 3.25
    • received: 3.24 corresponding to tag 3.24

Program output

Verbose versions

lastversion.lastversion - INFO - Verbose 1 level output.
lastversion.repo_holders.base - INFO - Using cache directory: /home/jsroemer/.cache/lastversion.
lastversion.repo_holders.base - INFO - Created instance of GitHubRepoSession
lastversion.repo_holders.github - INFO - No API token found in environment variables ['LASTVERSION_GITHUB_API_TOKEN', 'GITHUB_API_TOKEN', 'GITHUB_TOKEN'].
lastversion.repo_holders.github - INFO - Got HTTP status code 200 from https://github.com/unicode-org/icu/releases.atom
lastversion.repo_holders.github - INFO - Checking tag icu4x/2024-05-16/75.x
lastversion.repo_holders.base - INFO - Sanitizing string icu4x/2024-05-16/75.x as a satisfying version.
lastversion.repo_holders.base - INFO - Failed to parse icu4x/2024-05-16/75.x as Version.
lastversion.repo_holders.base - INFO - Sanitized tag name value to 75.x.
lastversion.repo_holders.base - INFO - Failed to parse 75.x as Version.
lastversion.repo_holders.github - INFO - We did not find a valid version in icu4x/2024-05-16/75.x tag
lastversion.repo_holders.github - INFO - Checking tag icu4x/2024-05-03/75.x
lastversion.repo_holders.base - INFO - Sanitizing string icu4x/2024-05-03/75.x as a satisfying version.
lastversion.repo_holders.base - INFO - Failed to parse icu4x/2024-05-03/75.x as Version.
lastversion.repo_holders.base - INFO - Sanitized tag name value to 75.x.
lastversion.repo_holders.base - INFO - Failed to parse 75.x as Version.
lastversion.repo_holders.github - INFO - We did not find a valid version in icu4x/2024-05-03/75.x tag
lastversion.repo_holders.github - INFO - Checking tag release-75-1
lastversion.repo_holders.base - INFO - Sanitizing string release-75-1 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 75.1.
lastversion.repo_holders.github - INFO - Tag release-75-1 is not comparable to current selection
lastversion.repo_holders.github - INFO - Got HTTP status code 200 from https://api.github.com/repos/unicode-org/icu/releases
lastversion.repo_holders.github - INFO - Selected version as current selection: 75.1.
lastversion.repo_holders.github - INFO - Checking tag release-75-rc
lastversion.repo_holders.base - INFO - Sanitizing string release-75-rc as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as unwanted pre-release version: 75rc0.
lastversion.repo_holders.github - INFO - We did not find a valid version in release-75-rc tag
lastversion.repo_holders.github - INFO - Checking tag release-74-2
lastversion.repo_holders.base - INFO - Sanitizing string release-74-2 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 74.2.
lastversion.repo_holders.github - INFO - Tag release-74-2 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag release-74-1
lastversion.repo_holders.base - INFO - Sanitizing string release-74-1 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 74.1.
lastversion.repo_holders.github - INFO - Tag release-74-1 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag release-74-rc
lastversion.repo_holders.base - INFO - Sanitizing string release-74-rc as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as unwanted pre-release version: 74rc0.
lastversion.repo_holders.github - INFO - We did not find a valid version in release-74-rc tag
lastversion.repo_holders.github - INFO - Checking tag brs/2023-10-04
lastversion.repo_holders.base - INFO - Sanitizing string brs/2023-10-04 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 2023.10.4.
lastversion.repo_holders.github - INFO - Got HTTP status code 404 from https://api.github.com/repos/unicode-org/icu/releases/tags/brs/2023-10-04
lastversion.repo_holders.github - INFO - No formal release for tag brs/2023-10-04
lastversion.repo_holders.github - INFO - Selected version as current selection: 2023.10.4.
lastversion.repo_holders.github - INFO - Checking tag cldr/2023-09-27
lastversion.repo_holders.base - INFO - Sanitizing string cldr/2023-09-27 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 2023.9.27.
lastversion.repo_holders.github - INFO - Tag cldr/2023-09-27 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag cldr/2023-09-25
lastversion.repo_holders.base - INFO - Sanitizing string cldr/2023-09-25 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 2023.9.25.
lastversion.repo_holders.github - INFO - Tag cldr/2023-09-25 does not contain newer version than we already found
lastversion.lastversion - INFO - Located the latest release tag brs/2023-10-04 at: https://github.com/unicode-org/icu via feed mechanism
2023.10.4
lastversion.lastversion - INFO - Verbose 1 level output.
lastversion.repo_holders.base - INFO - Using cache directory: /home/jsroemer/.cache/lastversion.
lastversion.repo_holders.base - INFO - Created instance of GitHubRepoSession
lastversion.repo_holders.github - INFO - No API token found in environment variables ['LASTVERSION_GITHUB_API_TOKEN', 'GITHUB_API_TOKEN', 'GITHUB_TOKEN'].
lastversion.repo_holders.github - INFO - Got HTTP status code 200 from https://github.com/HDFGroup/hdf5/releases.atom
lastversion.repo_holders.github - INFO - Checking tag hdf5_1.14.4.3
lastversion.repo_holders.base - INFO - Sanitizing string hdf5_1.14.4.3 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 5.1.14.4.3.
lastversion.repo_holders.github - INFO - Tag hdf5_1.14.4.3 is not comparable to current selection
lastversion.repo_holders.github - INFO - Got HTTP status code 200 from https://api.github.com/repos/HDFGroup/hdf5/releases
lastversion.repo_holders.github - INFO - Selected version as current selection: 5.1.14.4.3.
lastversion.repo_holders.github - INFO - Checking tag hdf5_1.14.4.2
lastversion.repo_holders.base - INFO - Sanitizing string hdf5_1.14.4.2 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 5.1.14.4.2.
lastversion.repo_holders.github - INFO - Tag hdf5_1.14.4.2 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag snapshot
lastversion.repo_holders.base - INFO - Sanitizing string snapshot as a satisfying version.
lastversion.repo_holders.base - INFO - Failed to parse snapshot as Version.
lastversion.repo_holders.base - INFO - Did not find anything that looks like a version in the tag
lastversion.repo_holders.github - INFO - We did not find a valid version in snapshot tag
lastversion.repo_holders.github - INFO - Checking tag snapshot-1.14
lastversion.repo_holders.base - INFO - Sanitizing string snapshot-1.14 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 1.14.
lastversion.repo_holders.github - INFO - Tag snapshot-1.14 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag hdf5_1.14.4.1
lastversion.repo_holders.base - INFO - Sanitizing string hdf5_1.14.4.1 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 5.1.14.4.1.
lastversion.repo_holders.github - INFO - Tag hdf5_1.14.4.1 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag hdf5_1.14.4
lastversion.repo_holders.base - INFO - Sanitizing string hdf5_1.14.4 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 5.1.14.4.
lastversion.repo_holders.github - INFO - Tag hdf5_1.14.4 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag hdf5-1_12_3
lastversion.repo_holders.base - INFO - Sanitizing string hdf5-1_12_3 as a satisfying version.
lastversion.repo_holders.base - INFO - Removed project name prefix, working now on string '1_12_3'
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 1.12.3.
lastversion.repo_holders.github - INFO - Tag hdf5-1_12_3 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag snapshot-1.12
lastversion.repo_holders.base - INFO - Sanitizing string snapshot-1.12 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 1.12.
lastversion.repo_holders.github - INFO - Tag snapshot-1.12 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag hdf5-1_14_3
lastversion.repo_holders.base - INFO - Sanitizing string hdf5-1_14_3 as a satisfying version.
lastversion.repo_holders.base - INFO - Removed project name prefix, working now on string '1_14_3'
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 1.14.3.
lastversion.repo_holders.github - INFO - Tag hdf5-1_14_3 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag hdf5-1_14_3-rc1
lastversion.repo_holders.base - INFO - Sanitizing string hdf5-1_14_3-rc1 as a satisfying version.
lastversion.repo_holders.base - INFO - Removed project name prefix, working now on string '1_14_3-rc1'
lastversion.repo_holders.base - INFO - Parsed as unwanted pre-release version: 1.14.3rc1.
lastversion.repo_holders.github - INFO - We did not find a valid version in hdf5-1_14_3-rc1 tag
lastversion.lastversion - INFO - Located the latest release tag hdf5_1.14.4.3 at: https://github.com/HDFGroup/hdf5 via release mechanism
5.1.14.4.3
lastversion.lastversion - INFO - Verbose 1 level output.
lastversion.repo_holders.base - INFO - Using cache directory: /home/jsroemer/.cache/lastversion.
lastversion.repo_holders.base - INFO - Created instance of GitHubRepoSession
lastversion.repo_holders.github - INFO - Using API token GITHUB_API_TOKEN.
lastversion.repo_holders.github - INFO - Got HTTP status code 200 from https://github.com/bulletphysics/bullet3/releases.atom
lastversion.repo_holders.github - INFO - Checking tag 3.25
lastversion.repo_holders.base - INFO - Sanitizing string 3.25 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.25.
lastversion.repo_holders.github - INFO - Tag 3.25 is not comparable to current selection
lastversion.repo_holders.github - INFO - Got HTTP status code 200 from https://api.github.com/repos/bulletphysics/bullet3/releases
lastversion.repo_holders.github - INFO - Selected version as current selection: 3.25.
lastversion.repo_holders.github - INFO - Checking tag 3.24
lastversion.repo_holders.base - INFO - Sanitizing string 3.24 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.24.
lastversion.repo_holders.github - INFO - Tag 3.24 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag 3.23
lastversion.repo_holders.base - INFO - Sanitizing string 3.23 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.23.
lastversion.repo_holders.github - INFO - Tag 3.23 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag 3.22b
lastversion.repo_holders.base - INFO - Sanitizing string 3.22b as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as unwanted pre-release version: 3.22b0.
lastversion.repo_holders.github - INFO - We did not find a valid version in 3.22b tag
lastversion.repo_holders.github - INFO - Checking tag 3.22
lastversion.repo_holders.base - INFO - Sanitizing string 3.22 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.22.
lastversion.repo_holders.github - INFO - Tag 3.22 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag 3.22a
lastversion.repo_holders.base - INFO - Sanitizing string 3.22a as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as unwanted pre-release version: 3.22a0.
lastversion.repo_holders.github - INFO - We did not find a valid version in 3.22a tag
lastversion.repo_holders.github - INFO - Checking tag 3.21
lastversion.repo_holders.base - INFO - Sanitizing string 3.21 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.21.
lastversion.repo_holders.github - INFO - Tag 3.21 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag 3.17
lastversion.repo_holders.base - INFO - Sanitizing string 3.17 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.17.
lastversion.repo_holders.github - INFO - Tag 3.17 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag 3.09
lastversion.repo_holders.base - INFO - Sanitizing string 3.09 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.9.
lastversion.repo_holders.github - INFO - Tag 3.09 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Checking tag 3.08
lastversion.repo_holders.base - INFO - Sanitizing string 3.08 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.8.
lastversion.repo_holders.github - INFO - Tag 3.08 does not contain newer version than we already found
lastversion.repo_holders.github - INFO - Feed contained none or only tags older than 1 year. Switching to API
lastversion.repo_holders.base - INFO - Sanitizing string 3.25 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.25.
lastversion.repo_holders.base - INFO - Sanitizing string 3.22b as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as unwanted pre-release version: 3.22b0.
lastversion.repo_holders.base - INFO - Sanitizing string 3.21 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.21.
lastversion.repo_holders.base - INFO - Sanitizing string 3.17 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.17.
lastversion.repo_holders.base - INFO - Sanitizing string 3.06 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.6.
lastversion.repo_holders.base - INFO - Sanitizing string 2.89 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 2.89.
lastversion.repo_holders.base - INFO - Sanitizing string 2.88 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 2.88.
lastversion.repo_holders.base - INFO - Sanitizing string 2.87 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 2.87.
lastversion.repo_holders.base - INFO - Sanitizing string 2.86.1 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 2.86.1.
lastversion.repo_holders.base - INFO - Sanitizing string 2.85.1 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 2.85.1.
lastversion.repo_holders.base - INFO - Sanitizing string 2.83.7 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 2.83.7.
lastversion.repo_holders.github - INFO - Using graphql queries...
lastversion.repo_holders.github - INFO - Running query 
        {
          rateLimit {
            cost
            remaining
          }
          repository(owner: "bulletphysics", name: "bullet3") {
            tags: refs(refPrefix: "refs/tags/", first: 100, after: "",
              orderBy: {field: TAG_COMMIT_DATE, direction: DESC}) {
              edges {
                cursor,
                node {
                  ...refInfo
                }
              }
            }
          }
        }

        fragment refInfo on Ref {
          name
          target {
            sha: oid
            commitResourcePath
            __typename
            ... on Tag {
              target {
                ... on Commit {
                  ...commitInfo
                }
              }
              tagger {
                name
                email
                date
              }
            }
            ... on Commit {
              ...commitInfo
            }
          }
        }

        fragment commitInfo on Commit {
          zipballUrl
          tarballUrl
          author {
            name
            email
            date
          }
        }

        
lastversion.repo_holders.github - INFO - Requested graphql with cursor ""
lastversion.repo_holders.base - INFO - Sanitizing string 3.25 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.25.
lastversion.repo_holders.github - INFO - Using commit date 2022-09-24T20:00:36-07:00
lastversion.repo_holders.github - INFO - Selected version as current selection: 3.25.
lastversion.repo_holders.base - INFO - Sanitizing string 3.24 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.24.
lastversion.repo_holders.github - INFO - Using commit date 2022-04-25T19:39:24-07:00
lastversion.repo_holders.github - INFO - Got HTTP status code 404 from https://api.github.com/repos/bulletphysics/bullet3/releases/tags/3.24
lastversion.repo_holders.github - INFO - Selected version as current selection: 3.24.
lastversion.repo_holders.base - INFO - Sanitizing string 3.23 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.23.
lastversion.repo_holders.github - INFO - Using commit date 2022-04-24T16:50:07-07:00
lastversion.repo_holders.base - INFO - Sanitizing string 3.22b as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as unwanted pre-release version: 3.22b0.
lastversion.repo_holders.base - INFO - Sanitizing string 3.22 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.22.
lastversion.repo_holders.github - INFO - Using commit date 2022-03-25T19:29:36-07:00
lastversion.repo_holders.base - INFO - Sanitizing string 3.22a as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as unwanted pre-release version: 3.22a0.
lastversion.repo_holders.base - INFO - Sanitizing string 3.21 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.21.
lastversion.repo_holders.github - INFO - Using commit date 2021-11-24T13:59:22-08:00
lastversion.repo_holders.base - INFO - Sanitizing string 3.17 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.17.
lastversion.repo_holders.github - INFO - Using commit date 2021-05-07T11:04:02-07:00
lastversion.repo_holders.base - INFO - Sanitizing string 3.09 as a satisfying version.
lastversion.repo_holders.base - INFO - Parsed as Version OK. String representation: 3.9.
lastversion.repo_holders.github - INFO - Using commit date 2021-03-04T12:10:28-08:00
lastversion.repo_holders.github - INFO - The version 3.9 is newer, but is too old!
lastversion.lastversion - INFO - Located the latest release tag 3.24 at: https://github.com/bulletphysics/bullet3 via graphql mechanism
3.24

Notes

  • Only the last call was done with a token set due to the rate limit kicking in
  • In the case of ICU, it is unclear to me why lastversion picks up a random tag, even though it doesn't show up in the release list, especially since the tag is much older than the recent releases
  • In the case of HDF5, the correct tag is picked up, but the version parsing is too permissive. I see two possible solutions: either avoid allowing mixed separators in version parsing (parsing hdf5_1.14.4.3 as 5.1.14.4.3 requires allowing both _ and . in a single tag), or strip the repository name if it is in the tag (drop hdf5 from hdf5_1.14.4.3, leaving _1.14.3.3)
  • In the case of Bullet, something very odd is happening. First, the 3.25 tag is found and correctly selected, then 3.24 is found, a query fails, then 3.24 is selected, despite being older and a lower version number
    lastversion.repo_holders.github - INFO - Got HTTP status code 404 from https://api.github.com/repos/bulletphysics/bullet3/releases/tags/3.24
    lastversion.repo_holders.github - INFO - Selected version as current selection: 3.24.
    
  • I am using the current version of lastversion (3.5.4)
@fh-igd-mueller-roemer fh-igd-mueller-roemer added the bug Something isn't working label Aug 27, 2024
@dvershinin
Copy link
Owner

@fh-igd-mueller-roemer thank you for your findings. Fixed in lastversion 3.5.5. The last issue is indeed weird since published_at as returned by the API is older than created_at (as in, release creation date is after it was published…). Added a workaround for this.

@fh-igd-mueller-roemer
Copy link
Author

@dvershinin Thank you! All three work fine now 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants