[linux-dvb] Errors compiling from hg snapshot

Trent Piepho xyzzy at speakeasy.org
Thu Jun 1 03:09:55 CEST 2006


On Wed, 31 May 2006, Michael Krufky wrote:
> On 5/31/06, Trent Piepho <xyzzy at speakeasy.org> wrote:
> > On Wed, 31 May 2006, hermann pitton wrote:
> > > Am Mittwoch, den 31.05.2006, 10:51 +0100 schrieb Gavin Hamill:
> > > > I don't have any radio cards - can I just disable this part of the
> > > > compile completely? If so, what do I need to comment out in the
> > > > Makefiles? :)
> > > >
> > Isn't it just a matter of using make xconfig or make gconfig or make
> > menuconfig to select the drivers to build, and then not selecting
> > micro PCM 20?  Or just edit v4l/.myconfig by and and set the MIRO
> > variables to 'n'?

I'd like to point out that .myconfig is generated from .config, but the
Makefile doesn't deal with this.  Edit .config by hand (because you have no
kernel source, and this no conf programs), and .myconfig isn't updated.  IMHO,
Makefiles that accurately represet the real dependencies and build process
work better.

> The problem is that the build system inside the mercurial repository
> is not honoring kconfig "depends on" clauses.  The micopcm20 radio
> driver should automatically be disabled in these cases where OSS has
> been stripped from the kernel.

It's nice for developers to be able to build all modules, to test changes,
without having to create a custom kernel with support for everything.  It
would be nice if this was still possible.

> This needs to be fixed somehow in that convoluted build script, but I
> have neither the time nor energy to attempt to figure out how.  I have
> added cc to Mauro -- he wrote this build script, maybe he can fix
> this, or at least comment on it.

> We know "depends on" functionality is broken... I wonder if "selects"
> is broken too?

I think it's not so much a bug, but the script has a different goal.

The script to look at is make_kconfig.pl.  It goes through the v4l-dvb Kconfig
files, looking at all the options.  It does not look at the kernel's Kconfig
files at all, not does it look at the kernel's .config file.

It generates v4l/Kconfig, which is sort of a concatanation of all the v4l-dvb
Kconfig files.

Then it makes v4l/Kconfig.kern, which is a subsitute for the kernel's Kconfig
files.  It provides default values for all the variables that v4l-dvb Kconfig
depends on that come from elsewhere (ie.  the kernel).  If you look in there,
you'll see:

# SOUND_ACI_MIXER with 1 refs
config SOUND_ACI_MIXER
        tristate
        default m

So it does honor the Miro PCM 20 "depends on" information.  It just honors it
by turning it on.  This is useful to developers, so that they can build
everything even when they don't have the hardware.  Not as useful to
non-developers, who may only want to build drivers that their current kernel
can actually use.

Lastly, if make allmodconfig/allyesconfig was used, make_kconfig.pl will make
v4l/.config, which sets all tristates to 'm', all booleans to 'y', and all
ints to their default.  Except for two special cased variables that get set to
'n'.

make_kconfig.pl will use the v4l/versions.txt file to turn off drivers that
need a newer kernel than they are getting built against.  These drivers'
Kconfig stanzas will not appear in v4l/Kconfig, instead a placeholder will be
inserted that is set to off.  However, the variable will still appear in
v4l/.config set to on.  Probably shouldn't do that.

After make_kconfig.pl is run, the oddly named make_noconfig.pl is run.  It
takes the .config file and produces a .myconfig that is suitable for including
into a Makefile.  It also reads v4l/versions.txt and turns off variables that
are not supported.  This is why make_kconfig.pl can get away with leaving
those variables on.

> I hope this explanation helps somebody to construct a fix to be merged
> into the repository. (hint, hint)

I haven't had so much luck with my changes to the build system getting merged.
(hint, hint)



More information about the linux-dvb mailing list