Hi everybody. This is a long note, and it's about the avahi package. It's about changes made in Changeset 27479 (June 7, 2011). Sorry not to have commented earlier, but I was busy on a separate project.
To come directly to the point, and with respect, I think that Changeset 27479 is flawed and needs to be undone. I think it is based on a number of misunderstandings -- see (II) below -- and actually introduces problems which I try to explain below in (I). There actually was a problem with the avahi package prior to Changeset 27479 but I think it's due to the nature of the build process and in any case there is a simple standard workaround. If there's a full fix for it, I'd love to know it. I give my understanding of it below -- see (III). Maybe it is me that misunderstands the situation. However, if you agree with me, I'd be happy to change the avahi Makefile back to what it was before Changeset 27479 (but including a change introduced in Changeset 27521, to disable DBUS support on brcm-2.4, unrelated to the issues discussed here). FYI I'm compiling 10.03.1-RC6 for a Linksys NSLU2. Best wishes Mike Brady (I) Problems with Changeset 27479 1. Changeset 27479 introduces two versions of the package avahi-autoipd; one with DBUS support, and one without. The thing is, avahi-autoipd does not depend on DBUS, so having a DBUS- and non-DBUS version of it makes no sense. What's more, selecting: Network > IP Addresses and Names > avahi-autoipd-dbus <*> (a) does not generate avahi-autoipd, and (b) causes DBUS to be generated and included in the build, even though, as mentioned, avahi-autoipd doesn't need DBUS at all. Also, oddly, the build log shows the avahi package being compiled and installed three separate times, instead of just once. 2. It is possible to select the DBUS- and the non-DBUS versions of some avahi packages at the same time. Of course, this makes no sense, but at least it's pretty obvious when you do it. However, similar problems can occur in a way that's hidden from you. For example, if you select the non-DBUS version of the avahi-daemon package, then the non-DBUS of libavahi will be selected. If you also select avahi-utils, this needs the DBUS version of libavahi. Thus you will be implicitly asking for two different versions of libavahi to be included -- the non-DBUS version and the DBUS version. It's not clear which one will be included in the final build. As mentioned above, the avahi package will be compiled and installed a few times -- five times in this case -- instead of just once. (II) The Possible Misunderstanding in Changeset 27479 It appears that the new Makefile was introduced in Changeset 27479 on the basis of a misunderstanding. In the note accompanying Changeset 27479 it says: "The package was producing a package avahi which required dbus if libavahi-dbus-support was selected (even as module), and without dbus if that package was not select. This has been fixed..." Actually, no "fix" is needed -- this is exactly what is meant to happen: The package libavahi-dbus-support was there to be automatically included if you chose avahi-utils, since avahi-utils requires the DBUS version of libavahi. The selection or omission of libavahi-dbus-support then automatically caused the appropriate version (DBUS- or non-DBUS) of avahi-daemon and avahi-dnsconfig to be compiled, if you had selected them, to correspond with the selected version of libavahi. In summary, starting with a clean system, you got non-DBUS versions of the relevant avahi packages by default, but if you chose something than needed DBUS support (i.e. avahi-utils), or if you selected libavahi-dbus-support manually, you got DBUS versions of all relevant avahi packages. The Changeset 27479 note then goes on to explain that with the new Makefile: "... dbus versions of the binary packages and non-dbus versions of the ones that can be without dbus, so that the smaller platformas can still have avahi without dbus, and those who want the dbus avahi can have it as well." However, this was already the case: as noted above, if avahi-utils was not selected, you were free to choose the DBUS- or non-DBUS version of the other avahi packages by manually selecting or omitting the libavahi-dbus-support. (III) The problem with the avahi package prior to Changeset 27479. There actually is a problem with the avahi package prior to Changeset 27479. Here is a scenario: 1. Choose a set of avahi packages that include DBUS support, and then do a complete build, you'll get the correct versions of the avahi packages and libavahi. 2. Change your choice of avahi packages to omit DBUS support, including only packages that don't need DBUS support, de-selecting avahi-dbus-support if necessary. If you rebuild the system, you may still get the DBUS versions of some of the avahi packages and/or libavahi (this may be the issue that Changeset 27479 was intended to fix). As best I can understand it, the issue is that all releveant packages are not necessarily recompiled, because the "make" dependencies don't seem to allow the build system to force recompilation of the relevant packages. The workaround is to always do a "make clean" before a make when you have changed selections in packages that have previously been compiled. I always understood this was general advice when building OpenWrt, but I'm open to correction. And if there is a way of dealing with this issue, I'd love to hear it. _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel