Re: [PATCH 1/1] kernel-2.eclass: Check to ensure genpatches contains the intended linux patch version

Mike Pagano <[email protected]>
Newsgroups gmane.linux.gentoo.devel
Message-ID <[email protected]>
On 5/4/26 12:33 PM, Sam James wrote:
> Sam James <[email protected]> writes:
> 
>> Mike Pagano <[email protected]> writes:
>>
>>> Iterate through the patch set files names looking for the kernel
>>> version to be installed. Die on failure.
>>>
>>> Signed-off-by: Mike Pagano <[email protected]>
>>
>> I'd include two Bug tags for
>> Bug: https://bugs.gentoo.org/972596
>> and
>> Bug: https://bugs.gentoo.org/970493
>>
>>> ---
>>>   eclass/kernel-2.eclass | 22 ++++++++++++++++++++++
>>>   1 file changed, 22 insertions(+)
>>>
>>> diff --git a/eclass/kernel-2.eclass b/eclass/kernel-2.eclass
>>> index 9484eab5b..7676e7276 100644
>>> --- a/eclass/kernel-2.eclass
>>> +++ b/eclass/kernel-2.eclass
>>> @@ -1115,6 +1115,28 @@ unipatch() {
>>>   			fi
>>>   		fi
>>>
>>> +        # If we use genpatches, let's make sure it includes the
>>> +        # kernel patch for the version we are trying to install
>>> +        # This is a sanity check to make sure the genpatches version
>>> +        # in the ebuild is correct
>>> +        #
>>> +        # Iterate through patch and look for OKV
>>> +        if [[ -n "${K_WANT_GENPATCHES}" ]]; then
>>> +            KV_PATCH_FOUND=
>>> +            for file in ${KPATCH_DIR}/*; do
>>> +                filename="${file##*/}"
>>> +                if [[ "$filename" == *"${OKV}"* ]]; then
>>> +                    KV_PATCH_FOUND=yes
>>> +                    break;
>>> +                fi
>>> +            done
>>> +            if [[ -z ${KV_PATCH_FOUND} ]]; then
>>> +                eerror "GENPATCHES does not contain linux patch ${OKV}"
>>> +                eerror "Please check your ebuild for the proper
>>> K_GENPATCHES_VER=N"
>>> +                die "GENPATCHES appears to be missing Linux patch ${OKV}"
>>> +            fi
>>> +        fi
>>
>> Not tested it but this looks reasonable to me, thank you!
>>
>> Another check could be done on VERSION/PATCHLEVEL in the Makefile to
>> compare with PV but I am not sure that adds anything on top of this, and
>> I think this check would catch the cases we've seen happen, so I
>> wouldn't worry about that.
> 
> One thing I realised: the check as-written would allow downgrades,
> e.g. 6.1.5 where the patches are actually for 6.1.10 because it contains
> all the patches for PV, yet the final version in the Makefile wouldn't
> match PV.
> 
>>
>>> +
>>>   		# If experimental was not chosen by the user, drop
>>>                     experimental patches not in K_EXP_GENPATCHES_LIST.
>>>   		if [[ ${i} == *genpatches-*.experimental.* && -n
>>>   		${K_EXP_GENPATCHES_PULL} ]]; then
>>>   			if [[ -z ${K_EXP_GENPATCHES_NOUSE} ]] && use experimental; then

Thanks for the review, Sam.
OpenPGP_0x92A6DBEC81F2B137.asc (application/pgp-keys, 19 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=jtKj
-----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature.asc (application/pgp-signature, 840 B)
-----BEGIN PGP SIGNATURE-----

wsF5BAABCAAjFiEEBGFuxmO2fsZ/M0XX+h2KeGDML5YFAmn4zxgFAwAAAAAACgkQ+h2KeGDML5b3
Dg/9GkdDaPITDwHcaV74q8dar971vQaL7DiHxpWR37GFsHhF+F7EipMQAOWZAjQm7UJ9hBA4atLy
/17kEpvjWArVMJ9IraeDk1CpkwVbAD48/+yOmhjLcqF0p5nNHv2NedQpTuWgEpLIgMgITSY2cCyM
QlO4QVVi5b6w7wXe096M7O1hd5F8ssYeDAsNUlCUNXsdkG0WBcp7dSkfWCgNCMhLmX+MHpGM+VpG
/Obiq6LISLmaII6bzr+9RoLC7CeTinK64dw9iKVOQoBlee8bDsR09bO9N4L2VIezbMBgw9uS/yPG
sjZFen7MzHJjoMMEaRuV/j3a2wmp6QTTQlVGFeRFvQzWtoWwYLMXybkY+K8MvSbAu2/i8ji3c8zX
XwABwMwHMUKyzLri5PnYyS7DWLQrItwWmscB/o0b0bsYLewwCvre4D1MjBLjKPk8NZ5qWd9/CrfS
s4fgDtvtmTZCkqZm7Ix3sxXIIsH2eiAL9CzTZ8vBWzB3MEIAiWzUHCz5WAto47bo7xPf8sXmntdW
Oc2lvCDUZr0BTYmjL2FEev+AL0PGQ2K+DSW9IbjLVZILEsJaUC/Weqk4QACeeGcihTMg6vLVmgJ9
xnElk4YTl2se4g8N7VW09FNzB0h1T1Z0s92coi23/6SzQVJT3nW9Sl8UhlH7KAfUdxL7SHjdHDKQ
zLs=
=sNtQ
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.