Re: [PATCH] iio: Use type header from kernel tree

From: Jonathan Cameron
Date: Sat Sep 10 2016 - 11:01:12 EST


On 09/09/16 16:47, Laura Abbott wrote:
> On 09/09/2016 08:35 AM, Daniel Baluta wrote:
>> On Fri, Sep 9, 2016 at 6:24 PM, Laura Abbott <labbott@xxxxxxxxxx> wrote:
>>>
>>> The iio tools have been updated as new event types have been added to
>>> the kernel. The tools currently use the standard system headers which
>>> means that the system may not have the newest defintitions. This leads
>>> to build failures when building newer tools on older hosts:
>>>
>>> gcc -Wall -g -D_GNU_SOURCE -c -o iio_event_monitor.o
>>> iio_event_monitor.c
>>> iio_event_monitor.c:59:3: error: âIIO_UVINDEXâ undeclared here (not in a
>>> function)
>>> [IIO_UVINDEX] = "uvindex",
>>> ^~~~~~~~~~~
>>> iio_event_monitor.c:59:3: error: array index in initializer not of
>>> integer type
>>> iio_event_monitor.c:59:3: note: (near initialization for
>>> âiio_chan_type_name_specâ)
>>> iio_event_monitor.c:97:3: error: âIIO_MOD_LIGHT_UVâ undeclared here (not
>>> in a function)
>>> [IIO_MOD_LIGHT_UV] = "uv",
>>> ^~~~~~~~~~~~~~~~
>>> iio_event_monitor.c:97:3: error: array index in initializer not of
>>> integer type
>>> iio_event_monitor.c:97:3: note: (near initialization for
>>> âiio_modifier_namesâ)
>>> <builtin>: recipe for target 'iio_event_monitor.o' failed
>>>
>>> Switch to using the header from the kernel tree to ensure the newest
>>> defintions are always picked up.
>>>
>>> Signed-off-by: Laura Abbott <labbott@xxxxxxxxxx>
>>
>> Hi Laura,
>>
>> Thanks for your patch. The solution here would be to install the
>> headers for your
>> new kernel in order to use the updated types.
>>
>> That is you should run make headers_install.
>>
>> $ make help | grep headers
>> headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH
>>
>> You can use INSTALL_HDR_PATH to put the headers in a custom directory
>> and tell gcc to also include this directory when searching for include headers.
>>
>
> That's a pretty ugly solution. We want to build this as part of Fedora
> and installing another local copy of the headers in the build environment
> complicates an already complicated build process. This is more work
> for users building on their own as well. Several other tools in the tools
> directory already use the headers from the kernel tree, is there a reason
> iio doesn't want to as well?
This got raised as a suggestion for discussion at the kernel summit this
year. Clearly a somewhat contentious topic ;)

https://lists.linuxfoundation.org/pipermail/ksummit-discuss/2016-September/003829.html

I'd prefer to see some resolution on that discussion before making any changes.
Looks like there are some moves afoot to standardise a lot of this stuff in
tools.

I've cc'd Ben who raised this particular issue in the first place.

Jonathan
>
> Thanks,
> Laura