Subject : TUNER_TDA8290=y, VIDEO_DEV=n build error Submitter : Toralf Förster <toralf.foerster@gmx.de> References : http://lkml.org/lkml/2008/2/19/262 Caused-By : Michael Krufky <mkrufky@linuxtv.org> commit 746d9732dbd5b95c3ba36230e2814fa2c391a311 commit 5bea1cd3871351d70cc7624af138f8aa68b7be77
"make mrproper && cp <oldconfig> .config && make oldconfig && make" wouldn't this be better: "cp <oldconfig> .config && make mrproper && make oldconfig && make" ? TUNER_TDA8290 selects DVB_TDA827X and DVB_TDA18271, but DVB_CORE is not selected. The Kconfig submenu that contains DVB_TDA827X and DVB_TDA18271 is inside of an "if DVB_CAPTURE_DRIVERS && DVB_CORE" block. DVB_CORE is not selected -- maybe this is why the tda827x and tda18271 were not built? (even though they do not actually depend on dvb-core)
even though those modules weren't built, it's strange that we see the "undefined reference" warnings..... tda827x.h and tda18271.h contain static inlines to be used (rather than the attach functions) when these modules are not selected.
(In reply to comment #1) > "make mrproper && cp <oldconfig> .config && make oldconfig && make" > > wouldn't this be better: > > "cp <oldconfig> .config && make mrproper && make oldconfig && make" ? >... mrproper deletes the .config
(In reply to comment #2) > even though those modules weren't built, it's strange that we see the > "undefined reference" warnings..... tda827x.h and tda18271.h contain static > inlines to be used (rather than the attach functions) when these modules are > not selected. The static inlines in tda827x.h and tda18271.h would only be used if the DVB_TDA827X and DVB_TDA18271 kconfig options weren't enabled.
Adrian, what's the status of this bug?
still present with 2.6.25-rc8
The issue here seems to be that CONFIG_DVB_TDA827X=y CONFIG_DVB_TDA18271=y But CONFIG_DVB_CORE is not set. One possible fix would be to do: config TUNER_TDA8290 tristate "TDA 8290/8295 + 8275(a)/18271 tuner combo" depends on I2C select DVB_TDA827X if DVB_CORE select DVB_TDA18271 if DVB_CORE default m if VIDEO_TUNER_CUSTOMIZE Not sure, however, if tda8290 will keep working with this config. Maybe we should, instead, do: config TUNER_TDA8290 depends on I2C && DVB_CORE
This does not solve the issue -- it makes it worse. DVB_TDA827X and DVB_TDA18271 are both drivers for hybrid tuners. TUNER_TDA8290 is a driver for an analog IF demodulator. A user may have an analog-only setup, with DVB_CORE disabled. This user may still need TUNER_TDA8290 and DVB_TDA827X and/or DVB_TDA18271 for their tuner support. This problem came up a few weeks ago, and we agreed that the first step in solving this issue is to move all of the analog *and* digital tuners into a common "tuner" directory, before restructuring the kconfig menus for this feature. We don't have time for that type of change in 2.6.25 -- let's think about this for 2.6.26 We should ignore this for now -- this is not a new issue. Similar issues exist in 2.6.24 that have never been reported.
The right solution is to move all tuners to a common dir. However, we should fix this regression for 2.6.25. The problem here is that you're compiling fine all stuff under drivers/media/video. However, as tda827x and tda18271 are inside drivers/media/dvb, they aren't compiled. A very simple solution, yet functional, is to make kernel compile tda*, with a patch like: diff --git a/drivers/media/Makefile b/drivers/media/Makefile index 8cf9135..7b8bb69 100644 --- a/drivers/media/Makefile +++ b/drivers/media/Makefile @@ -6,3 +6,6 @@ obj-y := common/ obj-y += video/ obj-$(CONFIG_VIDEO_DEV) += radio/ obj-$(CONFIG_DVB_CORE) += dvb/ +ifeq ($(CONFIG_DVB_CORE),) + obj-$(CONFIG_VIDEO_TUNER) += dvb/frontends/ +endif I think this is a good workaround to solve the issue, while we don't move common stuff to drivers/media/common. With the above patch and the offended .config, the drivers are now compiled: make drivers/media/ CHK include/linux/version.h CHK include/linux/utsrelease.h CALL scripts/checksyscalls.sh CC drivers/media/dvb/frontends/tda827x.o CC drivers/media/dvb/frontends/tda18271-tables.o CC drivers/media/dvb/frontends/tda18271-common.o CC drivers/media/dvb/frontends/tda18271-fe.o LD drivers/media/dvb/frontends/tda18271.o LD drivers/media/dvb/frontends/built-in.o LD drivers/media/built-in.o
Please note: this is *not* a regression -- a similar issue existed in 2.6.24. Meanwhile, if we can alleviate this problem now with minimal impact, then I'm all for it. As for Mauro's suggestion: --- a/drivers/media/Makefile +++ b/drivers/media/Makefile @@ -6,3 +6,6 @@ obj-y := common/ obj-y += video/ obj-$(CONFIG_VIDEO_DEV) += radio/ obj-$(CONFIG_DVB_CORE) += dvb/ +ifeq ($(CONFIG_DVB_CORE),) + obj-$(CONFIG_VIDEO_TUNER) += dvb/frontends/ +endif This change is fine with me, as an interim solution. But, does it actually resolve the issue described by this problem ticket?
On a full compilation with Toralf .config, compilation and linkedition went fine. I'll try to test other compilations later today.
This interim solution looks good. Let's merge it for 2.6.25.
Fixed by: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a80c5aa6da485da63def31442a19cdd6ff495ce6