[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: udev rules for usb devices?



On Thursday, September 26, 2019 7:30 AM, James Clarke <jrtc27@debian.org> pondered:
>>On 26 Sep 2019, at 03:05, Aaron M. Ucko <ucko@debian.org> wrote:
>> 
>> "Getz, Robin" <Robin.Getz@analog.com> writes:
>> 
>>> which that means when someone installs the base library (libiio), 
>>> they can't actually use any USB devices (as a non-root user), since 
>>> the udev rule isn't installed, and the udev rule is dependent on the 
>>> libiio-utils package.
>> 
>> I'd suggest putting the udev rule in the -utils package and having the 
>> runtime library package (libiio0) recommend that package.  (A hard 
>> dependency would create a cycle, but downgrading the relationship is 
>> sufficient to stay out of trouble.)  This approach has three big 
>> things going for it:
>> 
>> * The rule will be in the same binary package as the tool it needs.
>> 
>> * APT will then automatically encourage users of the library to 
>> install  the -utils package, complete with the rule and the tool.
>> 
>> * If and when the shared library's SONAME advances, old and new 
>> versions  will still be coinstallable as needed to allow for smooth transitions.
>> 
>> I suppose you could consider splitting iio_info and the rule out into 
>> their own binary package and having the runtime package recommend just 
>> that package, but the whole -utils package is small enough that I 
>> wouldn't bother.
>
> Personally I'd do this, especially since it sounds like the library isn't 
> much use without any devices. In particular, I would make libiio0 
> have a hard dependency on libiio-common.

It does - you can build applications using libiio for deployment on other machines, without the udev rule, without the utilities. 

We do this on travis-CI all the time...

Splitting into it's own package seems like overkill on a single line of text (udev rule) and a 27k application (iio_info). 


I think I like Aarons suggestion (include the udev rule in the -utils package).  So, the proposal is:

libiio0 (the shared object), recommends libiio-utils
libiio-utils (all the utilities and the udev), requires libiio
libiio-dev (header files), requires libiio, recommends libiio-utils

That works for me - if it works for Maitland (he is the person doing the work 😊)

-Robin

Reply to: