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:


I think the answer can be found at The pkgver() function
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.
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 ifpkgver()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).
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?
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.
Initially just set it to anything, then the first time you run
makepkgit will update to the correct/latest version according to yourpkgver()function.Something else I see a lot of people get wrong: you only need to manually push the latest
pkgverstring when you make changes to the PKGBUILD, otherwise just leave it as-is, since it will auto-update locally when people runmakepkgFor 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.
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
Sure, that’s true! However, typically (but not always!) in git packages there’s usually a new commit whenever you need to bump the
pkgverso yourpkgrelwouldn’t need a bump then.pkgrelbump is only when it’s the same (exact) version :)