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

Andrei Gherzan andrei.gherzan at canonical.com
Thu Mar 30 08:59:22 UTC 2023


On Thu, 30 Mar 2023, 08:31 Andrea Righi, <andrea.righi at canonical.com> 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.
>
> 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
>

I have considered this when fixing it. If we suspect that the config
rename/change is probable, I equally considered that the path/etc
might also change. But what skewed me into dealing with this at the
config level is that there are cases in the same mk file where this is done
similarly.

On second thought, the advantage I see now with doing the check
at the file/path level, is the fact that we don't tie a dependency between
the
annotation/config files and the rules (for this specific fix).

I'll send a V2 tested with the check at the file/path level.

Andrei
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20230330/90dd6627/attachment-0001.html>


More information about the kernel-team mailing list