Re: make buildkernel is broken (linuxkpi vs drm)

From: Warner Losh <imp_at_bsdimp.com>
Date: Fri, 22 Jan 2021 09:38:10 -0700
On Thu, Jan 21, 2021 at 3:50 AM Emmanuel Vadot <manu_at_bidouilliste.com>
wrote:

> On Wed, 20 Jan 2021 22:21:09 -0800
> Steve Kargl <sgk_at_troutmask.apl.washington.edu> wrote:
>
> > On Thu, Jan 21, 2021 at 07:18:07AM +0100, Hans Petter Selasky wrote:
> > > On 1/21/21 7:13 AM, Steve Kargl wrote:
> > > > It is 'make buildkernel' in /usr/src after a 'make buildworld'.
> > > > I have 'PORTS_MODULES+= graphics/drm-current-kmod' in /etc/make.conf.
> > >
> > > Try to update the ports tree. I'm not aware of any current build
> issues in
> > > this area.
> > >
> >
> > I tried that.  I did not fix the problem.  Commenting
> > out the PORTS_MODULES line in /etc/make.conf allows
> > me to finish building the new kernel.  I re-install
> > the port after I install world/kernel.
> >
> > --
> > Steve
>
>  Does it works now ?
>
>  I think that PORTS_MODULES shouldn't be used for drm-current-kmod or
> we should not install the source with it if PORTS_MODULES is the right
> way.
>
>  The problem is that drm-current-kmod install its sources
> in /usr/local/sys and by default all modules there will be rebuild when
> doing make buildkernel unless LOCAL_MODULES is defined.
>  The problem with installing sources is that if something changed in
> base that broke the build with a certain version of drm-current-kmod
> you first need to upgrade the ports/package to have the new sources to
> be able to make buildkernel correctly.
>  I personally hate the fact that we install the sources as it only
> causes problems for users but some people seems to like it.
>  It seems that if we don't install the sources and one uses
> PORTS_MODULES we just need to upgrade the ports tree before running
> make buildkernel if there is a conflicting changes which seems saner to
> me tbh.
>

I started out liking this, but kinda hate it now. We need a solution that
always builds the .ko file, but the current hodge-podge is confusing and
difficult to get right. -current is such we can't ship pre-compiled things,
and the number of kernel options that subtly break binaries ebbs and flows.

It was a solution for people that installed from the package: the sources
would be there and they'd always rebuild. In theory this is great! In
practice, though, current and drm are moving fast enough together that a
source package grows stale quickly so rebuilding old sources doesn't work
because they don't know about the new API requirements. Making the APIs
grok recent history of drm modules is harder than it sounds, alas.


>  For now I've been focusing the rage that LOCAL_MODULES exists and
> cause this kind of problems on migrating more stuff into base so that
> one day we will finally have drm in base again. But I'm a bit
> tired of dealing with all those problems and I've wondered a lot of
> times about removing installing sources for drm-current-kmod.
>

I think that might be best. I use LOCAL_MODULES all the time. However, I
use it with symlinks to a git tree that I keep up to date from there. You
can't do that with PORTS_MODULES. And it's a better match for the current
development style. It worked great for the iichid work as well before it
went into the tree, though it wasn't so fast moving that an occasionally
stale update would trip you up.


>  Adding jhb_at_ to cc as I know he uses LOCAL_MODULES so maybe he can
> explain the advantage over PORTS_MODULES.
>

So long as PORTS_MODULES always builds from source with every kernel build
you plan to install on the system, it works...  But you also have to be
careful about  making sure you always update ports before building the
kernel. Otherwise, you run into exactly the same issues you have with
LOCAL_MODULES...

Now, having said all that, this stuff (all the drm) should be in base, with
relaxed MFC constraints. It's too tightly coupled, and we don't have any
solution to the current de-facto requirement that you must update both at
the same time. The proffered advantage (being able to run new DRM drivers
on old systems) gives less benefit than the real problem of "I didn't
update my sources or knew that I needed to and now it won't build anymore".

Warner
Received on Fri Jan 22 2021 - 15:38:23 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:26 UTC