[J/linux][L/linux][PATCH] UBUNTU: [Packaging] Copy expoline.o only when the relevant config is enabled

Stefan Bader stefan.bader at canonical.com
Thu Mar 30 08:00:49 UTC 2023


On 30.03.23 09:31, Andrea Righi wrote:
> On Wed, Mar 29, 2023 at 03:13:56PM +0100, Andrei Gherzan wrote:
>> BugLink: https://bugs.launchpad.net/bugs/2013209
>>
>> The Jammy kernel enabled CONFIG_EXPOLINE_EXTERN for s390x. While this
>> works as expected on Jammy, it won't work on some derivatives of it: for
>> example focal:hwe-5.15. On Focal, this config can't be enabled due to
>> the GCC version it comes with. CONFIG_EXPOLINE_EXTERN requires >= 110200
>> while Focal comes with 90400.
>>
>> This change adds a config check when packaging of the expoline.o.
>>
>> Signed-off-by: Andrei Gherzan <andrei.gherzan at canonical.com>
>> ---
>>   debian/rules.d/2-binary-arch.mk | 6 ++++--
>>   1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
>> index 8e053f832b06..4fd528b0d7fd 100644
>> --- a/debian/rules.d/2-binary-arch.mk
>> +++ b/debian/rules.d/2-binary-arch.mk
>> @@ -335,8 +335,10 @@ ifeq ($(build_arch),powerpc)
>>   	cp $(builddir)/build-$*/arch/powerpc/lib/*.o $(hdrdir)/arch/powerpc/lib
>>   endif
>>   ifeq ($(build_arch),s390)
>> -	mkdir -p $(hdrdir)/arch/s390/lib/expoline/
>> -	cp $(builddir)/build-$*/arch/s390/lib/expoline/*.o $(hdrdir)/arch/s390/lib/expoline/
>> +	if grep -q CONFIG_EXPOLINE_EXTERN=y $(builddir)/build-$*/.config; then \
>> +		mkdir -p $(hdrdir)/arch/s390/lib/expoline/; \
>> +		cp $(builddir)/build-$*/arch/s390/lib/expoline/*.o $(hdrdir)/arch/s390/lib/expoline/; \
>> +	fi
> 
> We are implicitly assuming that CONFIG_EXPOLINE_EXTERN=y will always
> generate the *.o files that want to copy, how about checking for the
> presence of these files instead?
> 
> In this way everything will continue to work even if the config option
> is renamed/removed or if it changes its behavior.

There was a little more discussion about this on a related internal 
thread. Ultimately this should be installed by the make install 
machinery from upstream. Which Andrei might be working on in parallel.
This approach here is a bit of a band-aid which is not really necessary 
for K and L. But we thought we stay consistent. Maybe should make this 
SAUCE for L?

-Stefan
> 
> Maybe something like this (untested):
> 
>   # If there's at least one *.o file in the expoline build directory, copy
>   # it/them to $(hdrdir)/arch/s390/lib/expoline/
>   if [ -n "$(find $(builddir)/build-$*/arch/s390/lib/expoline/ -maxdepth 1 -name '*.o' -print -quit)" ]; then
>   	mkdir -p $(hdrdir)/arch/s390/lib/expoline/; \
>   	cp $(builddir)/build-$*/arch/s390/lib/expoline/*.o $(hdrdir)/arch/s390/lib/expoline/; \
>   fi
> 
> -Andrea
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xE8675DEECBEECEA3.asc
Type: application/pgp-keys
Size: 44613 bytes
Desc: OpenPGP public key
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20230330/e3ab3be9/attachment-0001.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20230330/e3ab3be9/attachment-0001.sig>


More information about the kernel-team mailing list