I want to create and upload an AUR package. For context, I did that years ago for specific releases, but now I want to create a new package that focuses on upstream Git without specific releases.

What do I write to the pkgver= value? Do I just take the latest version there? Because it is downloading with git clone the version number will not change and the PKGBUILD script will compare pkgver() instead. So what is the purpose of pkgver= for when downloading and building from Git directly? Looking at examples from other existing packages, they all have a number there. But its mostly outdated, so I don’t get it.

pkgname=thename-git
_pkgname="$(pkgname%-git}"
pkgver=???

pkgver() {
    cd "${_pkgname}"
    git describe --long | sed 's/\([^-]*-g\)/r\1/'
}

I am reading and researching, but need some assistance for this question. Currently reading the Archwiki:

  • pabryan@lemmy.ml
    link
    fedilink
    arrow-up
    6
    ·
    3 days ago

    I think the answer can be found at The pkgver() function

    To use pkgver(), you still need to declare the pkgver variable with the most recent value. makepkg will invoke function pkgver(), and update variable pkgver accordingly.

    I read that as set pkgver to the most recent version at the time you last updated the PKGBUILD. Then the pkgver() function will update it when building the package. I guess you just need something set. It’s not clear to me if it actually matters or not.

    • thingsiplay@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      3 days ago

      This seems to be what everyone else is doing. After further discussions and research, it seems like the pkgver= variable is completely ignored. And in newer versions one does not need to set it if pkgver() is used (only in older versions it was still needed). But everyone sets it nonetheless.

      And this was confusing, I thought I was missing something. Your linked webpage at least talks about this subject, which I couldn’t find in the Archwiki. It drove me crazy! So thanks for the link. I will just set the last version number, it doesn’t even matter (it seems).

      • pabryan@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        2 days ago

        Yes, it took a little digging to find it! Not sure why it’s necessary if it’s unused. Maybe for error checking? Is it tricky for shell scripts to detect whether a function (i.e. pkgver()) has been defined?

        • thingsiplay@lemmy.mlOP
          link
          fedilink
          arrow-up
          1
          ·
          2 days ago

          Some discussions say the variable was still needed in old versions of either the application that dealt with it or the web backend, its not clear. Some sort of software that depended on the variable. In later versions they finally made the variable optional, but most people seem to just add it out of good habit. It could also be used as a fallback, in case the function resolves to nothing or so, not sure. Someone else suggested the last version found in the variable could be documentation itself as a rough guideline to see from when this install script was.

          I find like the documentation is missing this information and should clear it up. For newcomers this would help.

      • SavvyBeardedFish@reddthat.com
        link
        fedilink
        arrow-up
        1
        ·
        3 days ago

        Initially just set it to anything, then the first time you run makepkg it will update to the correct/latest version according to your pkgver() function.

        Something else I see a lot of people get wrong: you only need to manually push the latest pkgver string when you make changes to the PKGBUILD, otherwise just leave it as-is, since it will auto-update locally when people run makepkg

        • thingsiplay@lemmy.mlOP
          link
          fedilink
          arrow-up
          2
          ·
          3 days ago

          For now I just put the current version string and uploaded it. Man I forgot how to do all of that stuff, that was stressful with all of the other issues I had.

          you only need to manually push the latest pkgver string when you make changes to the PKGBUILD

          Not really. If the version of the program does not change, but you make changes to the PKGBUILD, then you have to change pkgrel instead. pkgver change only if the application or library you try to build and install changes its version, pkgrel if the PKGBUILD is changed. https://wiki.archlinux.org/title/PKGBUILD#Version

          • SavvyBeardedFish@reddthat.com
            link
            fedilink
            arrow-up
            2
            ·
            3 days ago

            If the version of the program does not change, but you make changes to the PKGBUILD, then you have to change pkgrel instead.

            Sure, that’s true! However, typically (but not always!) in git packages there’s usually a new commit whenever you need to bump the pkgver so your pkgrel wouldn’t need a bump then. pkgrel bump is only when it’s the same (exact) version :)