[PATCH] kbuild: pacman-pkg: make "rc" releases adhere to pacman versioning scheme

Viktor Jägersküpper posted 1 patch 4 weeks, 1 day ago
There is a newer version of this series
scripts/package/PKGBUILD | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] kbuild: pacman-pkg: make "rc" releases adhere to pacman versioning scheme
Posted by Viktor Jägersküpper 4 weeks, 1 day ago
The package versioning scheme does not enable smooth upgrades from "rc"
releases to the corresponding stable releases (e.g. 7.0.0-rc7 -> 7.0.0)
because pacman considers that a downgrade due to the underscore in
pkgver (e.g. 7.0.0_rc7), see e.g. vercmp(8) for an explanation of the
package version comparison used by pacman. Package versions which are
derived from said releases (e.g. built from git revisions) are
similarly affected. Fix this by modifying pkgver in order to remove the
hyphen from kernel versions containing "-rc".

Signed-off-by: Viktor Jägersküpper <viktor_jaegerskuepper@freenet.de>
---
 scripts/package/PKGBUILD | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/package/PKGBUILD b/scripts/package/PKGBUILD
index 452374d63c24..fe629074b4e8 100644
--- a/scripts/package/PKGBUILD
+++ b/scripts/package/PKGBUILD
@@ -10,7 +10,7 @@ for pkg in $_extrapackages; do
 	pkgname+=("${pkgbase}-${pkg}")
 done
 
-pkgver="${KERNELRELEASE//-/_}"
+pkgver="$(echo "${KERNELRELEASE}" | sed 's/-rc/rc/;s/-/_/g')"
 # The PKGBUILD is evaluated multiple times.
 # Running scripts/build-version from here would introduce inconsistencies.
 pkgrel="${KBUILD_REVISION}"

---
base-commit: 254f49634ee16a731174d2ae34bc50bd5f45e731

Best regards,
Viktor
-- 
2.54.0
Re: [PATCH] kbuild: pacman-pkg: make "rc" releases adhere to pacman versioning scheme
Posted by Nathan Chancellor 4 weeks, 1 day ago
On Thu, 14 May 2026 01:17:29 +0200, Viktor Jägersküpper <viktor_jaegerskuepper@freenet.de> wrote:
> diff --git a/scripts/package/PKGBUILD b/scripts/package/PKGBUILD
> index 452374d63c24..fe629074b4e8 100644
> --- a/scripts/package/PKGBUILD
> +++ b/scripts/package/PKGBUILD
> @@ -10,7 +10,7 @@ for pkg in $_extrapackages; do
>  	pkgname+=("${pkgbase}-${pkg}")
>  done
>  
> -pkgver="${KERNELRELEASE//-/_}"
> +pkgver="$(echo "${KERNELRELEASE}" | sed 's/-rc/rc/;s/-/_/g')"

Sashiko notes [1] (with a contrived example) that this could result in
custom localversions being matched and adjusted. While I don't think it
is that big of a deal given how specific the example is, it takes little
effort to make the match more restrictive to make such a situation less
likely:

  pkgver="$(echo "${KERNELRELEASE}" | sed 's/-\(rc[0-9]\+\)/\1/;s/-/_/g')"

[1]: https://sashiko.dev/#/patchset/20030

-- 
Cheers,
Nathan

Re: [PATCH] kbuild: pacman-pkg: make "rc" releases adhere to pacman versioning scheme
Posted by Viktor Jägersküpper 4 weeks ago
On 5/14/26 15:19, Nathan Chancellor wrote:
> On Thu, 14 May 2026 01:17:29 +0200, Viktor Jägersküpper <viktor_jaegerskuepper@freenet.de> wrote:
>> diff --git a/scripts/package/PKGBUILD b/scripts/package/PKGBUILD
>> index 452374d63c24..fe629074b4e8 100644
>> --- a/scripts/package/PKGBUILD
>> +++ b/scripts/package/PKGBUILD
>> @@ -10,7 +10,7 @@ for pkg in $_extrapackages; do
>>  	pkgname+=("${pkgbase}-${pkg}")
>>  done
>>  
>> -pkgver="${KERNELRELEASE//-/_}"
>> +pkgver="$(echo "${KERNELRELEASE}" | sed 's/-rc/rc/;s/-/_/g')"
> 
> Sashiko notes [1] (with a contrived example) that this could result in
> custom localversions being matched and adjusted. While I don't think it
> is that big of a deal given how specific the example is, it takes little
> effort to make the match more restrictive to make such a situation less
> likely:
> 
>   pkgver="$(echo "${KERNELRELEASE}" | sed 's/-\(rc[0-9]\+\)/\1/;s/-/_/g')"
> 
> [1]: https://sashiko.dev/#/patchset/20030

I agree this is much better. Actually I should have looked at the
script "mkdebian" for Debian packages which has this line:

upstream_version=$("${srctree}/scripts/setlocalversion" --no-local "${srctree}" | sed 's/-\(rc[1-9]\)/~\1/')

This is incorrect for the (hopefully rare) case that we have 10 or more
"rc" releases, but that can be fixed in another patch.

Best regards,
Viktor
Re: [PATCH] kbuild: pacman-pkg: make "rc" releases adhere to pacman versioning scheme
Posted by Viktor Jägersküpper 4 weeks ago
On 5/14/26 23:46, Viktor Jägersküpper wrote:
> On 5/14/26 15:19, Nathan Chancellor wrote:
>> On Thu, 14 May 2026 01:17:29 +0200, Viktor Jägersküpper <viktor_jaegerskuepper@freenet.de> wrote:
>>> diff --git a/scripts/package/PKGBUILD b/scripts/package/PKGBUILD
>>> index 452374d63c24..fe629074b4e8 100644
>>> --- a/scripts/package/PKGBUILD
>>> +++ b/scripts/package/PKGBUILD
>>> @@ -10,7 +10,7 @@ for pkg in $_extrapackages; do
>>>  	pkgname+=("${pkgbase}-${pkg}")
>>>  done
>>>  
>>> -pkgver="${KERNELRELEASE//-/_}"
>>> +pkgver="$(echo "${KERNELRELEASE}" | sed 's/-rc/rc/;s/-/_/g')"
>>
>> Sashiko notes [1] (with a contrived example) that this could result in
>> custom localversions being matched and adjusted. While I don't think it
>> is that big of a deal given how specific the example is, it takes little
>> effort to make the match more restrictive to make such a situation less
>> likely:
>>
>>   pkgver="$(echo "${KERNELRELEASE}" | sed 's/-\(rc[0-9]\+\)/\1/;s/-/_/g')"
>>
>> [1]: https://sashiko.dev/#/patchset/20030
> 
> I agree this is much better. Actually I should have looked at the
> script "mkdebian" for Debian packages which has this line:
> 
> upstream_version=$("${srctree}/scripts/setlocalversion" --no-local "${srctree}" | sed 's/-\(rc[1-9]\)/~\1/')
> 
> This is incorrect for the (hopefully rare) case that we have 10 or more
> "rc" releases, but that can be fixed in another patch.
I was confused, this code for Debian packages should be fine.

Viktor
Re: [PATCH] kbuild: pacman-pkg: make "rc" releases adhere to pacman versioning scheme
Posted by Thomas Weißschuh 4 weeks, 1 day ago
On 2026-05-14 01:17:29+0200, Viktor Jägersküpper wrote:
> The package versioning scheme does not enable smooth upgrades from "rc"
> releases to the corresponding stable releases (e.g. 7.0.0-rc7 -> 7.0.0)
> because pacman considers that a downgrade due to the underscore in
> pkgver (e.g. 7.0.0_rc7), see e.g. vercmp(8) for an explanation of the
> package version comparison used by pacman. Package versions which are
> derived from said releases (e.g. built from git revisions) are
> similarly affected. Fix this by modifying pkgver in order to remove the
> hyphen from kernel versions containing "-rc".
> 
> Signed-off-by: Viktor Jägersküpper <viktor_jaegerskuepper@freenet.de>

Acked-by: Thomas Weißschuh <linux@weissschuh.net>

Thanks!

> ---
>  scripts/package/PKGBUILD | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

(...)