Hello, alsa-plugins currently includes speex/speex_types.h, but that doesn't work with speexdsp versions >= 1.2rc2, since speex_types.h has been replaced with speexdsp_types.h. I made a patch for alsa-plugins, so that it includes speexdsp_types.h instead. I also bumped the speexdsp version check from "1.2" to "1.2rc2" in configure.ac, since speexdsp_types.h didn't exist in versions prior to 1.2rc2. The version bump will break, however, if speexdsp 1.2 will ever get released, because I think that pkg-config considers "1.2" to be less than "1.2rc2" (I didn't actually verify that, but considering that pkg-config thinks that "1.2rc2" >= "1.2", it's pretty likely that "1.2" < "1.2rc2" in pkg-config's mind). As a solution, I propose that if a non-rc releases of speexdsp will still be made, the 1.2 version number will be skipped, and 1.3 will be used instead. -- Tanu
On Thu, Jul 09, 2015 at 12:23:17PM +0300, Tanu Kaskinen wrote:> Hello, > > alsa-plugins currently includes speex/speex_types.h, but that doesn't > work with speexdsp versions >= 1.2rc2, since speex_types.h has been > replaced with speexdsp_types.h.Strictly speaking it hasn't been "replaced", it's just supplied by speex rather than speexdsp, as was the case before the package split.> I made a patch for alsa-plugins, so that > it includes speexdsp_types.h instead. I also bumped the speexdsp version > check from "1.2" to "1.2rc2" in configure.ac, since speexdsp_types.h > didn't exist in versions prior to 1.2rc2. > > The version bump will break, however, if speexdsp 1.2 will ever get > released, because I think that pkg-config considers "1.2" to be less > than "1.2rc2" (I didn't actually verify that, but considering that > pkg-config thinks that "1.2rc2" >= "1.2", it's pretty likely that "1.2" > < "1.2rc2" in pkg-config's mind).This is just one of the reasons why things like this should be testing for _features_ not for versions :) Though possibly the more interesting question is why alsa-plugins is including speex_types.h directly at all? It should really only need that if it's including some other speex header - in which case it should already be getting included by that header anyway ...> As a solution, I propose that if a non-rc releases of speexdsp will > still be made, the 1.2 version number will be skipped, and 1.3 will be > used instead.In Debian with deal with this with version numbers like 1.2~rc1, where '~' sorts before anything else in the collating order -- but I don't recall if pkg-config ever adopted that too. (some people who worked on it certainly know about it). Ron
On Fri, 2015-07-10 at 03:32 +0930, Ron wrote:> On Thu, Jul 09, 2015 at 12:23:17PM +0300, Tanu Kaskinen wrote: > > I made a patch for alsa-plugins, so that > > it includes speexdsp_types.h instead. I also bumped the speexdsp > > version > > check from "1.2" to "1.2rc2" in configure.ac, since > > speexdsp_types.h > > didn't exist in versions prior to 1.2rc2. > > > > The version bump will break, however, if speexdsp 1.2 will ever get > > released, because I think that pkg-config considers "1.2" to be > > less > > than "1.2rc2" (I didn't actually verify that, but considering that > > pkg-config thinks that "1.2rc2" >= "1.2", it's pretty likely that > > "1.2" > > < "1.2rc2" in pkg-config's mind). > > This is just one of the reasons why things like this should be > testing > for _features_ not for versions :)OK. FYI, my patch was merged in alsa-plugins, but the maintainer added another patch that checks whether speexdsp_types.h exists, and if not, speex_types.h gets used instead. So alsa-plugins is now compatible with both old and new speex versions.> Though possibly the more interesting question is why alsa-plugins is > including speex_types.h directly at all? It should really only need > that if it's including some other speex header - in which case it > should already be getting included by that header anyway ...After I sent my mail, I wondered about that question myself too. I realized that PulseAudio and alsa-plugins use pretty much the same feature set from speexdsp, but PulseAudio doesn't include speexdsp_types.h directly. I'll look into this at some point - probably there's no real need to include speexdsp_types.h directly in alsa -plugins either.> > As a solution, I propose that if a non-rc releases of speexdsp will > > still be made, the 1.2 version number will be skipped, and 1.3 will > > be > > used instead. > > In Debian with deal with this with version numbers like 1.2~rc1, > where > '~' sorts before anything else in the collating order -- but I don't > recall if pkg-config ever adopted that too. (some people who worked > on it certainly know about it).Unfortunately, even if pkg-config supports the '~' syntax, it's too late to benefit from that now that .pc files with "1.2rc1" and "1.2rc2" in them are already in the wild. -- Tanu