[alsa-devel] ALSA 1.1.8 Release - POLLRDNORM undefined
Jay Foster
jay at systech.com
Thu Jan 10 17:44:34 CET 2019
On 1/10/2019 12:31 AM, Jaroslav Kysela wrote:
> Dne 10.1.2019 v 05:24 Takashi Sakamoto napsal(a):
>> Hi,
>>
>> I'm an author of axfer.
>>
>> On Tue, 08 Jan 2019 18:00:18 +0100, Jay Foster wrote:
>>> I am attempting to build the 1.1.8 release of alsa-utils and getting
>>> an error about POLLRDNORM (and others) undefined. This error comes
>>> from axfer/waiter-select.c. axfer/waiter-select.c includes
>>> "waiter.h", which includes "poll.h". This build is for a linux
>>> target.
>>> On Wed, 09 Jan 2019 17:22:36 +0100, Jay Foster wrote:
>>>> On 1/9/2019 3:10 AM, Takashi Iwai wrote:
>>>>> Which libc are you using? The POSIX man page (man poll.h) mentions
>>>>> POLLRDNORM defined there, at least, on my system with glibc 2.27.
>>>> This is a legacy ARM product using glibc 2.9.
>> I'm sorry for the FTBFS but it's out of my notice to build with too-old glibc.
>>
>> Here, a history of glibc for related events:
>> * glibc-2.9: 2008/11/13
>> * your version
>> * glibc-2.10: 2009/5/9
>> * support XPG7/POSIX-2008
>> * add '__USE_XOPEN2k8' for the avove
>> * glibc-2.19: 2014/2/7
>> * add '_DEFAULT_SOURCE' macro
>> * XPG7/POSIX-2008 is a default behaviour
>> * glibc-2.20: 2014/9/7
>> * obsolete '_BSD_SOURCE' and '_SYSV_SOURCE' macros
>> * glibc-2.28: 2018/8/1
>> * used my environment (Ubuntu 18.10)
>>
>> The macros, POLLRDNORM and the others, seems to be defined officially in
>> POSIX-2008 and nowadays glibc supports POSIX-2008 as a default. This is
>> the reason that I've never faced your issue in my development period.
>> I guess it's the reason that nothing noted in man of poll(2) and
>> select(2).
>>
>> I need a bit time to judge whether it's woth to support such old-glibc.
>> Just removal of the newly-introduced macros is a simple solution.
> We may add those definitions to CFLAGS (-D) through configure for the
> old libs. Or just used #ifdef in the waiter-select.c - it's only one
> place which uses this at this moment, but it's only quick workaround.
>
> Jaroslav
>
I can resolve the issue by adding -D_GNU_SOURCE to my CFLAGS when
building alsa-utils. It would also be acceptable (to me) if you did
nothing about this.
If you wish to check the version of glibc for support of POLLRDNORM
through configure and add -D_GNU_SOURCE for older versions, that may
work too. I can report that-D_GNU_SOURCE is not needed with glibc
2.22. I am not sure precisely which version the POLLRDNORM (and
friends) were enabled by default. I can imagine a configure test that
compiled a test app which tries to use POLLRDNORM, and if it compiles
successfully, then nothing else is needed. If not, try again with
-D_GNU_SOURCE, and if that works, add -D_GNU_SOURCE to the CFLAGS. Such
a test might also be conditional on selecting waiter-select (the only
place this is used).
Jay
More information about the Alsa-devel
mailing list