Re: Improve DKMS build of v4l-dvb?

2009-03-17 Thread Alain Kalker
Op dinsdag 17-03-2009 om 12:50 uur [tijdzone -0700], schreef Trent
Piepho:
> On Tue, 17 Mar 2009, Alain Kalker wrote:
> > Op vrijdag 13-03-2009 om 02:12 uur [tijdzone -0700], schreef Trent
> > Piepho:
> > > On Mon, 9 Mar 2009, Alain Kalker wrote:
> > > > Firstly: generating a .config with just one config variable for the
> > > > requested driver set to 'm' merged with the config for the kernel being
> > > > built for, and then doing a "make silentoldconfig". Big disatvantage is
> > > > that full kernel source is required for the 'silentoldconfig' target to
> > > > be available.
> > >
> > > Does that actually work?  Figuring out that needs to be turned on to 
> > > enable
> > > some config options is a hard problem.  It's not just simple dependencies
> > > between modules, but complex expressions that need to be satisfied.  E.g.,
> > > something "depends on A || B", which do you turn on, A or B?  There are
> > > multiple solutions so how does the code decide which is best?
> >
> > Well, make_kconfig.pl does quite a nice job trying to select as many
> > drivers without causing conflicts.
> 
> What I did in make_kconfig.pl was just turn everything on, then recursively
> disable anything that has a failed dependency.  There isn't any
> intelligence when it comes to choices where you can have driver set A or
> driver set B, but not both.  Options that we want disabled, like some
> drivers' advanced debug controls, must be explicitly disabled in
> make_kconfig.  Still, it ends up doing what we want in the end, which is to
> compile all the drivers that we can compile.
> 
> > Anyway, you're quite right about this being a hard problem, and the
> > fact that the Kconfig system wasn't designed to be very helpful in
> > auto-selecting dependencies and resolving conflicts the same way modern
> > package managers are, doesn't make it any easier.
> 
> >From what I can tell, solving the dependency problem is easily shown to be
> the same as the classical satisfiability problem, which is proven to be NP
> complete.  Now, there are heuristics that can usually solve SAT problems
> quicker but finding the "best" solution quickly is quite a bit harder.

Yet, most of us are quite content with the solutions which the
dependency resolvers in package managers offer, even if they're possibly
non-optimal. Package maintainers try very hard to find ways to ease the
dependency problem by supplying acceptable defaults. And like I said
before, when no unique solution can be found, the user should have the
final say on which solution should be applied.

Back to the problem of DKMS builds, I'm not looking for a "perfect"
solution for a single driver (neither does make_kconfig.pl look for a
"perfect solution for all drivers at once :-) ), I'm looking for a way
to reduces the total number of modules that have to be rebuilt when the
v4l-dvb source or the kernel is upgraded.

How about disabling all modules which don't affect the dependencies of
the "target" driver? Attacking the problem from the other side, so to
speak. Even when unneccessary modules are still left enabled in the
.config, this is still better than building everything but the kitchen
sink, which is what the current DKMS script does (it simply does a
"make all").

> You don't need write access to the kernel source.  The kernel's config
> programs have to be built, but that can be done ahead of time.  Once they
> are, then you can use that menu tool from v4l-dvb without write access to
> the kernel source.
> 
> There is support for an alternate output directory for the kernel that can
> work too.  In the kernel dir, run "make O=~/kernel-output-dir menuconfig".
> That should not require write access to the kernel source dir and will put
> the necessary config programs in ~/kernel-output-dir.  Then point v4l-dvb
> at the kernel output dir, with "make release DIR=~/kernel-output-dir".
> 
> See the explanation from my changeset that added this,
> http://linuxtv.org/hg/v4l-dvb/log/6331 Good thing I wrote this 17 months
> ago when I did the work, instead of just using some two word patch
> description, since I sure wouldn't remember how all that works today.

Thanks for the info, I will try this.

Kind regards, Alain

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Improve DKMS build of v4l-dvb?

2009-03-17 Thread Trent Piepho
On Tue, 17 Mar 2009, Alain Kalker wrote:
> Op vrijdag 13-03-2009 om 02:12 uur [tijdzone -0700], schreef Trent
> Piepho:
> > On Mon, 9 Mar 2009, Alain Kalker wrote:
> > > Firstly: generating a .config with just one config variable for the
> > > requested driver set to 'm' merged with the config for the kernel being
> > > built for, and then doing a "make silentoldconfig". Big disatvantage is
> > > that full kernel source is required for the 'silentoldconfig' target to
> > > be available.
> >
> > Does that actually work?  Figuring out that needs to be turned on to enable
> > some config options is a hard problem.  It's not just simple dependencies
> > between modules, but complex expressions that need to be satisfied.  E.g.,
> > something "depends on A || B", which do you turn on, A or B?  There are
> > multiple solutions so how does the code decide which is best?
>
> Well, make_kconfig.pl does quite a nice job trying to select as many
> drivers without causing conflicts.

What I did in make_kconfig.pl was just turn everything on, then recursively
disable anything that has a failed dependency.  There isn't any
intelligence when it comes to choices where you can have driver set A or
driver set B, but not both.  Options that we want disabled, like some
drivers' advanced debug controls, must be explicitly disabled in
make_kconfig.  Still, it ends up doing what we want in the end, which is to
compile all the drivers that we can compile.

> Anyway, you're quite right about this being a hard problem, and the
> fact that the Kconfig system wasn't designed to be very helpful in
> auto-selecting dependencies and resolving conflicts the same way modern
> package managers are, doesn't make it any easier.

>From what I can tell, solving the dependency problem is easily shown to be
the same as the classical satisfiability problem, which is proven to be NP
complete.  Now, there are heuristics that can usually solve SAT problems
quicker but finding the "best" solution quickly is quite a bit harder.

> For the moment, I would suggest either to choose a default which works
> for most people, or ask the user (using any Kconfig menu tool, if only
> they didn't need write access to the kernel source, grrr!) to choose
> among alternatives if no combination of options can be selected
> automatically.

You don't need write access to the kernel source.  The kernel's config
programs have to be built, but that can be done ahead of time.  Once they
are, then you can use that menu tool from v4l-dvb without write access to
the kernel source.

There is support for an alternate output directory for the kernel that can
work too.  In the kernel dir, run "make O=~/kernel-output-dir menuconfig".
That should not require write access to the kernel source dir and will put
the necessary config programs in ~/kernel-output-dir.  Then point v4l-dvb
at the kernel output dir, with "make release DIR=~/kernel-output-dir".

See the explanation from my changeset that added this,
http://linuxtv.org/hg/v4l-dvb/log/6331 Good thing I wrote this 17 months
ago when I did the work, instead of just using some two word patch
description, since I sure wouldn't remember how all that works today.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Improve DKMS build of v4l-dvb?

2009-03-17 Thread Alain Kalker
Op vrijdag 13-03-2009 om 02:12 uur [tijdzone -0700], schreef Trent
Piepho: 
> On Mon, 9 Mar 2009, Alain Kalker wrote:
> > Martin has an older version of the drivers packaged for building with
> > DKMS on Ubuntu in his PPA[5], but it currently has some disadvantages:
> >
> > A. It builds all available drivers, no matter which hardware is actually
> > installed in the system. This takes a lot of time, and may not be
> > practical at all on systems with limited resources (e.g. embedded, MIDs,
> > netbooks)
> > B. It currently has no support for Jockey to detect installed hardware,
> > so individual drivers can be selected.
> >
> > To address these issues, I would like to propose the following:
> >
> > A. Building individual drivers (i.e. sets of modules which constitute a
> > fully-functional driver), without having to manually configure them
> > using "make menuconfig"
> >
> > I see two possibilities for realizing this:
> > Firstly: generating a .config with just one config variable for the
> > requested driver set to 'm' merged with the config for the kernel being
> > built for, and then doing a "make silentoldconfig". Big disatvantage is
> > that full kernel source is required for the 'silentoldconfig' target to
> > be available.
> 
> Does that actually work?  Figuring out that needs to be turned on to enable
> some config options is a hard problem.  It's not just simple dependencies
> between modules, but complex expressions that need to be satisfied.  E.g.,
> something "depends on A || B", which do you turn on, A or B?  There are
> multiple solutions so how does the code decide which is best?

Well, make_kconfig.pl does quite a nice job trying to select as many
drivers without causing conflicts.

Anyway, you're quite right about this being a hard problem, and the
fact that the Kconfig system wasn't designed to be very helpful in
auto-selecting dependencies and resolving conflicts the same way modern
package managers are, doesn't make it any easier.

For the moment, I would suggest either to choose a default which works
for most people, or ask the user (using any Kconfig menu tool, if only
they didn't need write access to the kernel source, grrr!) to choose
among alternatives if no combination of options can be selected
automatically.

> > Secondly, the script v4l/scripts/analyze_build.pl generates a list of
> > modules that will get built for each Kconfig variable selected, but it
> > currently has no way of determing all the module dependencies that make
> > up a fully functional driver.
> 
> I just wrote analyze_build.pl to make it easier for developers to figure
> out that source files make up a module and how to enable it.  It's not
> actually used by the build system.  It's also not perfect when it comes to
> parsing makefiles, i.e. it no where near a re-implementation of make's
> parser in perl.  It understands the typical syntax used by the kernel
> makefiles but sometimes there is some unusual bit of make code that it
> won't parse.

Nice work! I've been using it a lot while testing. I expect to use it
also in a tool which will work like 'modinfo', except using module
source files as input. I plan to add some nice extensions like showing
the config options which enable a module, symbolic DeviceID/VendorID,
values, etc.

Kind regards,

Alain

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Improve DKMS build of v4l-dvb?

2009-03-13 Thread Trent Piepho
On Mon, 9 Mar 2009, Alain Kalker wrote:
> Martin has an older version of the drivers packaged for building with
> DKMS on Ubuntu in his PPA[5], but it currently has some disadvantages:
>
> A. It builds all available drivers, no matter which hardware is actually
> installed in the system. This takes a lot of time, and may not be
> practical at all on systems with limited resources (e.g. embedded, MIDs,
> netbooks)
> B. It currently has no support for Jockey to detect installed hardware,
> so individual drivers can be selected.
>
> To address these issues, I would like to propose the following:
>
> A. Building individual drivers (i.e. sets of modules which constitute a
> fully-functional driver), without having to manually configure them
> using "make menuconfig"
>
> I see two possibilities for realizing this:
> Firstly: generating a .config with just one config variable for the
> requested driver set to 'm' merged with the config for the kernel being
> built for, and then doing a "make silentoldconfig". Big disatvantage is
> that full kernel source is required for the 'silentoldconfig' target to
> be available.

Does that actually work?  Figuring out that needs to be turned on to enable
some config options is a hard problem.  It's not just simple dependencies
between modules, but complex expressions that need to be satisfied.  E.g.,
something "depends on A || B", which do you turn on, A or B?  There are
multiple solutions so how does the code decide which is best?

> Secondly, the script v4l/scripts/analyze_build.pl generates a list of
> modules that will get built for each Kconfig variable selected, but it
> currently has no way of determing all the module dependencies that make
> up a fully functional driver.

I just wrote analyze_build.pl to make it easier for developers to figure
out that source files make up a module and how to enable it.  It's not
actually used by the build system.  It's also not perfect when it comes to
parsing makefiles, i.e. it no where near a re-implementation of make's
parser in perl.  It understands the typical syntax used by the kernel
makefiles but sometimes there is some unusual bit of make code that it
won't parse.

> The script v4l/scripts/check_deps.pl tries to discover dependencies
> between Kconfig variables, but it currently is somewhat slow, and hase a
> few other problems.

That it is!  It's not totally perfect either.  Sometimes a driver will only
depend on another if something is turned on.  But the way check_deps.pl
works won't know that.  There are also lots of Kconfig variables that don't
turn on a module but instead modify what a module does or are used for
menus.  I think a better system would be use the dependencies in the
Kconfig files instead of trying to figure them out from the source.

> B. To enable hardware autodetection before installing drivers, we need
> to have a list of modaliases of all supported hardware. This may be the
> hardest part, because many VendorIDs and ProductIDs are scattered
> throughout the code. Also coldbooting/warmbooting hardware is a problem.

Extract that from the compiled modules should be easy.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Improve DKMS build of v4l-dvb?

2009-03-11 Thread Alain Kalker
Op woensdag 11-03-2009 om 10:14 uur [tijdzone -0400], schreef Devin
Heitmueller:
> I hate to be the one to point this out, but isn't the notion of
> automatically rebuilding the modules for *your* hardware broken right
> from the start?  What this would mean that if I own a laptop and my
> USB based capture device happens to not be connected when I upgrade my
> kernel, then my drivers are going to be screwed up?

Not at all. Hardware detection needs to be done only once: when you
first plug in a new device. The result of this detection is then used to
generate a dkms.conf file, which specifies exactly which driver needs to
be (re-)built.
During initial install, and whenever you upgrade your kernel (Whether
you have the device plugged in or not), DKMS will (re-)build the driver
to match the (current or new) kernel and install its modules on your
system. Whenever you plug in your device, the modules making up its
driver will get loaded.

Kind regards,

Alain

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Improve DKMS build of v4l-dvb?

2009-03-11 Thread Devin Heitmueller
On Wed, Mar 11, 2009 at 7:47 AM, Mauro Carvalho Chehab
 wrote:
>> After the test build, all you have to do is run "modinfo -F alias" on
>> all the modules, add the principal module name, and you will end up with
>> a modaliases list which is directly usable with Jockey. For users
>> without it, another simple script will select the correct principal
>> module to build.
>
> IMO, a perl script searching for PCI and USB tables at the driver would do a
> faster job than doing a module build. You don't need to do a test build to
> know what modules compile, since v4l/versions.txt already contains the
> minimum supported version for each module. If the module is not there, then
> it will build since kernel 2.6.16.

I hate to be the one to point this out, but isn't the notion of
automatically rebuilding the modules for *your* hardware broken right
from the start?  What this would mean that if I own a laptop and my
USB based capture device happens to not be connected when I upgrade my
kernel, then my drivers are going to be screwed up?

Maybe I'm just missing something.

Devin

-- 
Devin J. Heitmueller
http://www.devinheitmueller.com
AIM: devinheitmueller
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Improve DKMS build of v4l-dvb?

2009-03-11 Thread Alain Kalker
Op woensdag 11-03-2009 om 08:47 uur [tijdzone -0300], schreef Mauro
Carvalho Chehab:
> IMO, a perl script searching for PCI and USB tables at the driver
> would do 
> a faster job than doing a module build. You don't need to do a test build 
> to know what modules compile, since v4l/versions.txt already contains the 
> minimum supported version for each module. If the module is not there, 
> then it will build since kernel 2.6.16.

Good point, but for now I'm staying away from parsing the source files
(tough job to get it right with all the substitutions and the like), so
I can finish up packaging the source for DKMS and building the right
modules for a driver.

Kind regards,

Alain

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Improve DKMS build of v4l-dvb?

2009-03-11 Thread Alain Kalker
Op woensdag 11-03-2009 om 12:36 uur [tijdzone +0100], schreef Alain
Kalker:
> Very true. I'm quite dissatisfied with the sad state that Kbuild support
> for building external modules
in the mainline kernel is in.

I'm actually considering asking the linux-kbuild list how this can be
improved, When (DKMS) and on-demand driver building gain more
popularity, something _has_ to change...

> Kind regards,
> 
> Alain

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Improve DKMS build of v4l-dvb?

2009-03-11 Thread Mauro Carvalho Chehab

On Wed, 11 Mar 2009, Alain Kalker wrote:


Op maandag 09-03-2009 om 20:43 uur [tijdzone -0300], schreef Mauro
Carvalho Chehab:

It is not that hard. You'll have a few vars that will always have the same 
values, like:

[snip]

Thanks for the information, I'll use this as a starting point.


Of course, you'll need to write some script to identify what devices are
available at the host (by USB or PCI ID), and associate it with the V4L/DVB
drivers.


Scanning for available hardware is already available in Jockey, and
parsing the output from 'lsusb'/'lspci' will do it for users without
it.

Associating IDs with the principal module is easy after doing a test
build of all modules (which needs to be done anyway, to find out which
drivers can actually be built with the current tree and to decide
whether the tree is suitable for packaging for DKMS build).

After the test build, all you have to do is run "modinfo -F alias" on
all the modules, add the principal module name, and you will end up with
a modaliases list which is directly usable with Jockey. For users
without it, another simple script will select the correct principal
module to build.


IMO, a perl script searching for PCI and USB tables at the driver would do 
a faster job than doing a module build. You don't need to do a test build 
to know what modules compile, since v4l/versions.txt already contains the 
minimum supported version for each module. If the module is not there, 
then it will build since kernel 2.6.16.




All that remains then is to sort out the module dependencies...


Probably, the hardest part is to maintain, so, ideally, the scripts should scan
the source codes to check what drivers you have, and what are the driver
options associated with that device.


Very true. I'm quite dissatisfied with the sad state that Kbuild support
for building external modules is in, especially for projects that have
numerous drivers and module dependencies, and I believe v4l-dvb has
currently the most advanced out-of-tree support available.


Thanks!


If you enjoy watching a horror movie, have a look at the drivers from
the ALSA project, they have a hideous 131615 bytes big beast hidden in
their aclocal.m4, whose sole purpose it is to sort out config variable
dependencies... Yuck!


Yeah, I've seen this already.

Cheers,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Improve DKMS build of v4l-dvb?

2009-03-11 Thread Alain Kalker
Op maandag 09-03-2009 om 20:43 uur [tijdzone -0300], schreef Mauro
Carvalho Chehab: 
> It is not that hard. You'll have a few vars that will always have the same 
> values, like:
[snip]

Thanks for the information, I'll use this as a starting point.

> Of course, you'll need to write some script to identify what devices are
> available at the host (by USB or PCI ID), and associate it with the V4L/DVB
> drivers.

Scanning for available hardware is already available in Jockey, and
parsing the output from 'lsusb'/'lspci' will do it for users without
it. 

Associating IDs with the principal module is easy after doing a test
build of all modules (which needs to be done anyway, to find out which
drivers can actually be built with the current tree and to decide
whether the tree is suitable for packaging for DKMS build).

After the test build, all you have to do is run "modinfo -F alias" on
all the modules, add the principal module name, and you will end up with
a modaliases list which is directly usable with Jockey. For users
without it, another simple script will select the correct principal
module to build.

All that remains then is to sort out the module dependencies...

> Probably, the hardest part is to maintain, so, ideally, the scripts should 
> scan
> the source codes to check what drivers you have, and what are the driver
> options associated with that device.

Very true. I'm quite dissatisfied with the sad state that Kbuild support
for building external modules is in, especially for projects that have
numerous drivers and module dependencies, and I believe v4l-dvb has
currently the most advanced out-of-tree support available.
If you enjoy watching a horror movie, have a look at the drivers from
the ALSA project, they have a hideous 131615 bytes big beast hidden in
their aclocal.m4, whose sole purpose it is to sort out config variable
dependencies... Yuck!

> If you can write such script, then we can add it at v4l/scripts and add a
> "make myconfig" option that would run the script and compile the minimal set 
> of
> drivers.

That would be great!

Kind regards,

Alain

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Improve DKMS build of v4l-dvb?

2009-03-09 Thread Mauro Carvalho Chehab
On Mon, 09 Mar 2009 16:34:54 +0100
Alain Kalker  wrote:

> I'm interested in improving the very interesting work[1] by Martin
> Pitt[2] on making the v4l-dvb tree build under DKMS[3], so the drivers
> get automatically rebuilt when the user installs a new kernel package.
> 
> Martin also works on the Jockey driver manager[4] which is used in
> Ubuntu to detect hardware for which there are no drivers in the kernel
> and to inform the user about available driver packages which can then be
> downloaded and installed automatically.
> 
> Enabling DKMS build of v4l-dvb will also enable users with no experience
> in building kernel modules to easily install the latest development
> drivers for their hardware. This will improve the exposure of v4l-dvb
> drivers to a wider community of users who can help with testing the
> drivers on the wide variety of hardware that is out there.
> 
> Martin has an older version of the drivers packaged for building with
> DKMS on Ubuntu in his PPA[5], but it currently has some disadvantages:
> 
> A. It builds all available drivers, no matter which hardware is actually
> installed in the system. This takes a lot of time, and may not be
> practical at all on systems with limited resources (e.g. embedded, MIDs,
> netbooks)
> B. It currently has no support for Jockey to detect installed hardware,
> so individual drivers can be selected.
> 
> To address these issues, I would like to propose the following:
> 
> A. Building individual drivers (i.e. sets of modules which constitute a
> fully-functional driver), without having to manually configure them
> using "make menuconfig"
> 
> I see two possibilities for realizing this:
> Firstly: generating a .config with just one config variable for the
> requested driver set to 'm' merged with the config for the kernel being
> built for, and then doing a "make silentoldconfig". Big disatvantage is
> that full kernel source is required for the 'silentoldconfig' target to
> be available. 
> Secondly, the script v4l/scripts/analyze_build.pl generates a list of
> modules that will get built for each Kconfig variable selected, but it
> currently has no way of determing all the module dependencies that make
> up a fully functional driver.
> The script v4l/scripts/check_deps.pl tries to discover dependencies
> between Kconfig variables, but it currently is somewhat slow, and hase a
> few other problems.
> 
> B. To enable hardware autodetection before installing drivers, we need
> to have a list of modaliases of all supported hardware. This may be the
> hardest part, because many VendorIDs and ProductIDs are scattered
> throughout the code. Also coldbooting/warmbooting hardware is a problem.
> 
> I am very interested in any comments on these ideas, and getting in
> contact with anyone who would like to help me with this project.

It is not that hard. You'll have a few vars that will always have the same 
values, like:

CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_COMMON=m
CONFIG_VIDEO_ALLOW_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_DVB_CORE=m
CONFIG_VIDEO_MEDIA=m
CONFIG_MEDIA_ATTACH=y
CONFIG_VIDEO_CAPTURE_DRIVERS=y
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
CONFIG_V4L_USB_DRIVERS=y
CONFIG_USB_GSPCA=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_DVB_DYNAMIC_MINORS=y
CONFIG_DVB_CAPTURE_DRIVERS=y
CONFIG_MEDIA_TUNER=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L1=m
CONFIG_VIDEO_CAPTURE_DRIVERS=y
CONFIG_V4L_USB_DRIVERS=y
CONFIG_USB_GSPCA=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_DVB_DYNAMIC_MINORS=y
CONFIG_DVB_CAPTURE_DRIVERS=y
# CONFIG_DAB is not set

You should also be sure that the helper chips will be auto-selected, with those
three options:

CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
# MEDIA_TUNER_CUSTOMIZE is not set
# CONFIG_DVB_FE_CUSTOMISE is not set

Then, all you need, in order to support an specific board is to add the
driver-specific Kconfig, like (for cx88):

CONFIG_VIDEO_CX88=m
CONFIG_VIDEO_CX88_ALSA=m
CONFIG_VIDEO_CX88_BLACKBIRD=m
CONFIG_VIDEO_CX88_DVB=m
CONFIG_VIDEO_CX88_MPEG=m
CONFIG_VIDEO_CX88_VP3054=m

Of course, you'll need to write some script to identify what devices are
available at the host (by USB or PCI ID), and associate it with the V4L/DVB
drivers.

Probably, the hardest part is to maintain, so, ideally, the scripts should scan
the source codes to check what drivers you have, and what are the driver
options associated with that device.

If you can write such script, then we can add it at v4l/scripts and add a
"make myconfig" option that would run the script and compile the minimal set of
drivers.

> 
> Kind regards,
> 
> Alain
> 
> [1]
> http://martinpitt.wordpress.com/2008/06/10/packaged-dvb-t-drivers-for-ubuntu-804/
> [2] https://launchpad.net/~pitti
> [3] http://linux.dell.com/projects.shtml#dkms
> [4] https://launchpad.net/jockey
> [5] https://launchpad.net/~pitti/+archive/ppa
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html




Ch

Improve DKMS build of v4l-dvb?

2009-03-09 Thread Alain Kalker
I'm interested in improving the very interesting work[1] by Martin
Pitt[2] on making the v4l-dvb tree build under DKMS[3], so the drivers
get automatically rebuilt when the user installs a new kernel package.

Martin also works on the Jockey driver manager[4] which is used in
Ubuntu to detect hardware for which there are no drivers in the kernel
and to inform the user about available driver packages which can then be
downloaded and installed automatically.

Enabling DKMS build of v4l-dvb will also enable users with no experience
in building kernel modules to easily install the latest development
drivers for their hardware. This will improve the exposure of v4l-dvb
drivers to a wider community of users who can help with testing the
drivers on the wide variety of hardware that is out there.

Martin has an older version of the drivers packaged for building with
DKMS on Ubuntu in his PPA[5], but it currently has some disadvantages:

A. It builds all available drivers, no matter which hardware is actually
installed in the system. This takes a lot of time, and may not be
practical at all on systems with limited resources (e.g. embedded, MIDs,
netbooks)
B. It currently has no support for Jockey to detect installed hardware,
so individual drivers can be selected.

To address these issues, I would like to propose the following:

A. Building individual drivers (i.e. sets of modules which constitute a
fully-functional driver), without having to manually configure them
using "make menuconfig"

I see two possibilities for realizing this:
Firstly: generating a .config with just one config variable for the
requested driver set to 'm' merged with the config for the kernel being
built for, and then doing a "make silentoldconfig". Big disatvantage is
that full kernel source is required for the 'silentoldconfig' target to
be available. 
Secondly, the script v4l/scripts/analyze_build.pl generates a list of
modules that will get built for each Kconfig variable selected, but it
currently has no way of determing all the module dependencies that make
up a fully functional driver.
The script v4l/scripts/check_deps.pl tries to discover dependencies
between Kconfig variables, but it currently is somewhat slow, and hase a
few other problems.

B. To enable hardware autodetection before installing drivers, we need
to have a list of modaliases of all supported hardware. This may be the
hardest part, because many VendorIDs and ProductIDs are scattered
throughout the code. Also coldbooting/warmbooting hardware is a problem.

I am very interested in any comments on these ideas, and getting in
contact with anyone who would like to help me with this project.

Kind regards,

Alain

[1]
http://martinpitt.wordpress.com/2008/06/10/packaged-dvb-t-drivers-for-ubuntu-804/
[2] https://launchpad.net/~pitti
[3] http://linux.dell.com/projects.shtml#dkms
[4] https://launchpad.net/jockey
[5] https://launchpad.net/~pitti/+archive/ppa

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html