From: mkrufky@linuxtv.org
To: mchehab@infradead.org
Cc: mingo@elte.hu, linux-kernel@vger.kernel.org,
g.liakhovetski@pengutronix.de, isely@pobox.com
Subject: Re: [patch] video: build fix for drivers/media/video/pvrusb2/
Date: Tue, 13 May 2008 12:30:25 -0400 [thread overview]
Message-ID: <4829C221.2010109@linuxtv.org> (raw)
In-Reply-To: <4829B999.2090108@linuxtv.org>
Michael Krufky wrote:
> Mauro Carvalho Chehab wrote:
>> On Tue, 13 May 2008 00:03:02 -0400
>> "Michael Krufky" <mkrufky@linuxtv.org> wrote:
>>
>>
>>> On Mon, May 12, 2008 at 10:54 PM, Mauro Carvalho Chehab
>>> <mchehab@infradead.org> wrote:
>>>
>>>> On Sun, 11 May 2008 08:34:06 -0400
>>>> "Michael Krufky" <mkrufky@linuxtv.org> wrote:
>>>>
>>>> > On Sun, May 11, 2008 at 3:21 AM, Ingo Molnar <mingo@elte.hu> wrote:
>>>> > >
>>>> > > x86.git testing found the following build failure:
>>>> > >
>>>> > > drivers/built-in.o: In function `pvr2_dvb_feed_thread':
>>>> > > pvrusb2-dvb.c:(.text+0x127e78): undefined reference to
>>>> `dvb_dmx_swfilter'
>>>> > > drivers/built-in.o: In function `pvr2_dvb_adapter_exit':
>>>> > > pvrusb2-dvb.c:(.text+0x128357): undefined reference to
>>>> `dvb_net_release'
>>>> > > pvrusb2-dvb.c:(.text+0x12836f): undefined reference to
>>>> `dvb_dmxdev_release'
>>>> > > [...]
>>>> > >
>>>> > > with this config:
>>>> > >
>>>> > >
>>>> http://redhat.com/~mingo/misc/config-Sun_May_11_07_06_35_CEST_2008.bad
>>>> > >
>>>> > > the reason for the missing symbols is this combination:
>>>> > >
>>>> > > CONFIG_VIDEO_PVRUSB2=y
>>>> > > CONFIG_DVB_CORE=m
>>>> > >
>>>> > > i.e. pvrusb2 is built-in, dvb-core is modular.
>>>> > >
>>>> > > This patch solves the problem by adding a dependency on
>>>> DVB_CORE - this
>>>> > > is used by other drivers such as au0828 as well. This way the
>>>> pvrusb2
>>>> > > driver can still be built, but if dvb-core is a module then it
>>>> will
>>>> > > correctly be a module as well and cannot be built-in.
>>>> > >
>>>> > > Signed-off-by: Ingo Molnar <mingo@elte.hu>
>>>> > > ---
>>>> > > drivers/media/video/pvrusb2/Kconfig | 2 +-
>>>> > > 1 file changed, 1 insertion(+), 1 deletion(-)
>>>> > >
>>>> > > Index: linux/drivers/media/video/pvrusb2/Kconfig
>>>> > >
>>>> ===================================================================
>>>> > > --- linux.orig/drivers/media/video/pvrusb2/Kconfig
>>>> > > +++ linux/drivers/media/video/pvrusb2/Kconfig
>>>> > > @@ -1,6 +1,6 @@
>>>> > > config VIDEO_PVRUSB2
>>>> > > tristate "Hauppauge WinTV-PVR USB2 support"
>>>> > > - depends on VIDEO_V4L2 && I2C
>>>> > > + depends on VIDEO_V4L2 && I2C && DVB_CORE
>>>> > > select FW_LOADER
>>>> > > select MEDIA_TUNER
>>>> > > select VIDEO_TVEEPROM
>>>> > >
>>>> >
>>>> > Ingo,
>>>> >
>>>> > VIDEO_PVRUSB2 should not depend on DVB_CORE unless
>>>> VIDEO_PVRUSB2_DVB
>>>> > is selected, which already depends on DVB_CORE.
>>>> >
>>>> > For example, if a user has VIDEO_PVRUSB2_DVB not selected, then
>>>> your
>>>> > patch would generate a false dependency on DVB_CORE.
>>>>
>>>> Maybe we can make pvrusb2 dependent of VIDEO_MEDIA. This is a
>>>> DVB_CORE ||
>>>> VIDEO_DEV. So, pvrusb should be 'm' in this case.
>>>>
>>> That sounds like it would be OK, although something like this would
>>> probably be better:
>>>
>>> config VIDEO_PVRUSB2
>>> tristate "Hauppauge WinTV-PVR USB2 support"
>>> - depends on VIDEO_V4L2 && I2C
>>> + depends on VIDEO_V4L2 && I2C && (DVB_CORE if VIDEO_PVRUSB2_DVB)
>>> select FW_LOADER
>>> select MEDIA_TUNER
>>> select VIDEO_TVEEPROM
>>>
>>
>> This doesn't look to be a good idea, since VIDEO_PVRUSB2_DVB depends on
>> VIDEO_PVRUSB2. So, you'll create a circular dependency. The syntax I've
>> proposed seems cleaner. Of course, it needs to be tested. IMO, all
>> hybrid
>> devices should be dependent of VIDEO_MEDIA. This will help to avoid
>> this kind
>> of issue.
>>
>>
>>> I don't know if that syntax works for "depends on" , but it does work
>>> for select.
>>>
>>> if "depends on FOO if BAR" doesnt work, would adding "select DVB_CORE
>>> if VIDEO_PVRUSB2_DVB" solve the problem?
>>>
>>
>> Also, this leads into a circular reference.
> Mauro,
>
> You're right -- I didn't consider the circular dependency.
>
> Your suggestion (depends on VIDEO_MEDIA) seems like the right way to go.
Mauro,
It has just occurred to me -- there is yet another issue that is created
by the dependency on VIDEO_MEDIA .....
The pvrusb2 driver *always* has a V4L2 interface exposed, and optionally
can have a DVB interface.
So, VIDEO_PVRUSB2 will *always* depend on VIDEO_DEV, but conditionally
depend on DVB_CORE.
...Sounds like the correct clause should be:
depends on VIDEO_V4L2 && I2C && VIDEO_DEV && VIDEO_MEDIA
...what do you think?
-Mike Krufky
next prev parent reply other threads:[~2008-05-13 16:31 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-11 7:21 [patch] video: build fix for drivers/media/video/pvrusb2/ Ingo Molnar
2008-05-11 12:34 ` Michael Krufky
2008-05-13 2:54 ` Mauro Carvalho Chehab
2008-05-13 4:03 ` Michael Krufky
2008-05-13 15:46 ` Mauro Carvalho Chehab
2008-05-13 15:54 ` mkrufky
2008-05-13 16:30 ` mkrufky [this message]
2008-05-13 15:56 ` Mike Isely
2008-05-13 16:02 ` Mike Isely
2008-05-14 6:01 ` Mauro Carvalho Chehab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4829C221.2010109@linuxtv.org \
--to=mkrufky@linuxtv.org \
--cc=g.liakhovetski@pengutronix.de \
--cc=isely@pobox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mchehab@infradead.org \
--cc=mingo@elte.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.