It is a valid lirc configuration to have more than one driver at a time. With the old lirc ebuilds < 0.8.0-r1 you could do LIRC_OPTS="--with-driver=serial --with-driver=irman" now you should do: LIRC_DEVICES="serial irman" but it does not work. # emerge -av lirc These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] app-misc/lirc-0.8.0-r5 USE="X alsa transmitter* usb -debug -doc -hardware-carrier -udev" LIRC_DEVICES="irman serial* -act200l -act220l -adaptec -all -alsa_usb -animax -atilibusb -atiusb -audio -audio_alsa -avermedia -avermedia98 -avermedia_vdomate -bestbuy -bestbuy2 -breakoutbox -bte -bw6130 -caraca -chronos -cmdir -com1 -com2 -com3 -com4 -cph06x -creative -creative_infracd -devinput -digimatrix -dsp -dvico -ea65 -exaudio -flyvideo -gvbctv5pci -hauppauge -hauppauge_dvb -hercules_smarttv_stereo -igorplugusb -imon -imon_pad -imon_pad2keys -imon_rsc -irdeo -irdeo_remote -irreal -it87 -knc_one -kworld -leadtek_0007 -leadtek_0010 -leadtek_pvr2000 -livedrive_midi -livedrive_seq -logitech -lpt1 -lpt2 -mceusb -mceusb2 -mediafocusI -mouseremote -mouseremote_ps2 -mp3anywhere -nslu2 -packard_bell -parallel -pcmak -pcmak_usb -pctv -pixelview_bt878 -pixelview_pak -pixelview_pro -provideo -realmagic -remotemaster -sa1100 -sasem -serial_igor_cesko -silitek -sir -slinke -streamzap -tekram -tekram_bt829 -tira -tvbox -udp -uirt2 -uirt2_raw -usbirboy -userspace -xboxusb" 0 kB Would you like to merge these packages? [Yes/No] y >>> Emerging (1 of 1) app-misc/lirc-0.8.0-r5 to / >>> checking ebuild checksums ;-) >>> checking auxfile checksums ;-) >>> checking miscfile checksums ;-) >>> checking lirc-0.8.0.tar.bz2 ;-) * Determining the location of the kernel source code * Found kernel source directory: * /usr/src/linux * Found sources for kernel version: * 2.6.16.9 * Compiling support for device irman * * lirc does at the moment support only one driver be compiled at a time. * Please reduce LIRC_DEVICES to one item. !!! ERROR: app-misc/lirc-0.8.0-r5 failed. Call stack: ebuild.sh, line 1555: Called dyn_setup ebuild.sh, line 668: Called pkg_setup lirc-0.8.0-r5.ebuild, line 130: Called add_device 'serial' lirc-0.8.0-r5.ebuild, line 98: Called die !!! Multiple drivers selected for lirc. !!! If you need support, post the topmost build error, and the call stack if relevant.
That's by design, as the message tells you.
Created attachment 95002 [details, diff] patch to allow multiple driver builds with this patch you can use: LIRC_DEVICES="serial irman"
by removing the "die" on multiple drivers with the attached patch you can use multiple drivers eg: LIRC_DEVICES="serial irman"
We don't need a patch, we know how to enable it, but it's disabled *intentionally*.
Please explain why, or link to a reason why it is *intentionally* crippled. I and others need to support multiple types of devices. If there is an upstream bug where certian drivers do not work together, then that is not a gentoo problem. I really need an ebuild that works.
If there is a dependency, link to it. why LATER?
Sigh, just read the ebuild perhaps? It's written there.
What is in the ebuild: #ewarn "When selecting multiple devices for lirc to be supported," #ewarn "it can not be garanteed that the drivers play nice together." ewarn "lirc does at the moment support only one driver be compiled at a time." ewarn "Please reduce LIRC_DEVICES to one item." die "Multiple drivers selected for lirc." ... What i need and say that compiles and works is: LIRC_DEVICES="serial irman" There is no need to "die" in this case. The old way of LIRC_OPTS could do this..
I understand that this restriction seems like nonsense but at least it is not so easy possible to compile more than one driver that creates a kernel-modules. That statement can be proved by looking at that part of configure.in of lirc: if test "$driver" = "act200l"; then lirc_driver="lirc_dev lirc_sir" AC_DEFINE(LIRC_SIR_ACTISYS_ACT200L) fi if test "$driver" = "atiusb"; then lirc_driver="lirc_dev lirc_atiusb" lircd_conf="atiusb/lircd.conf.atiusb" fi ... repeated for all possibilities of --with-driver The problem here is that lirc_driver is overwritten for every driver that need a kernel module. -> Only for the last setting a Kernel-module is compiled. For your combination this will work as only --with-driver=serial will create a kernel-module. The possibilities are: a) Call configure for every --with-driver and copy the kernel-module. b) Change lirc_driver="xyz" to lirc_driver="${lirc_driver} xyz". Both possibilities will work for cases that no kernel-module is compiled two times with different options. But in every case compiling more than one driver should give a big fat warning about it.
Option A, I belive will break some configurations, where lircd will not run because it will say it was compliled with out support for driver xyx. I would vote for Option B. I am aware of the lirc limitation with kernel drivers, that is a lirc (upstream) limitation that I can live with. There are a few userspace lirc drivers that can be used at the same time. Having the gentoo ebuild support this would be nice. Yes, a big fat warning is needed.
Bug# 131306 https://bugs.gentoo.org/show_bug.cgi?id=131306 is where this was introduced. The old LIRC_OPTS, was in general more flexible than the new LIRC_DEVICES.. LIRC_DEVICES allowed to check dependencies on other needed libs. Would it perhaps be possible to use LIRC_DEVICES as default to solve dependencies, but have LIRC_OPTS override the configure opts if wanted?
Option B as described does not work so easily but requires huge changes to the configure-script. Perhaps Option A will work with first time calling configure with each option alone and for building lircd calling it with all arguments (or --with-driver=userspace). Requires a bit of investigation but then it should work.
Now allowing more than one driver (with warning) in lirc-0.8.0-r7.