diff mbox series

libqmi: udev and qmi-over-mbim are optional

Message ID 20170905100327.21421-1-aleksander@aleksander.es
State Changes Requested
Headers show
Series libqmi: udev and qmi-over-mbim are optional | expand

Commit Message

Aleksander Morgado Sept. 5, 2017, 10:03 a.m. UTC
Don't always build without udev, as qmi-firmware-update would be very
very limited in that case. Instead, make it optional: if there is udev
support in the setup, require libgudev and configure using --with-udev
explicitly; otherwise just --without-udev.

Also, add the qmi-over-mbim feature as optional, and require libmbim
if we're building with it enabled.

Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
---
 package/libqmi/Config.in | 18 ++++++++++++++++++
 package/libqmi/libqmi.mk | 18 ++++++++++++++++--
 2 files changed, 34 insertions(+), 2 deletions(-)

Comments

Thomas Petazzoni Sept. 5, 2017, 7:36 p.m. UTC | #1
Hello,

On Tue,  5 Sep 2017 12:03:27 +0200, Aleksander Morgado wrote:
> Don't always build without udev, as qmi-firmware-update would be very
> very limited in that case. Instead, make it optional: if there is udev
> support in the setup, require libgudev and configure using --with-udev
> explicitly; otherwise just --without-udev.
> 
> Also, add the qmi-over-mbim feature as optional, and require libmbim
> if we're building with it enabled.
> 
> Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
> ---
>  package/libqmi/Config.in | 18 ++++++++++++++++++
>  package/libqmi/libqmi.mk | 18 ++++++++++++++++--
>  2 files changed, 34 insertions(+), 2 deletions(-)
> 
> diff --git a/package/libqmi/Config.in b/package/libqmi/Config.in
> index f1d111b7c..a536650b5 100644
> --- a/package/libqmi/Config.in
> +++ b/package/libqmi/Config.in
> @@ -10,6 +10,24 @@ config BR2_PACKAGE_LIBQMI
>  
>  	  http://www.freedesktop.org/wiki/Software/libqmi/
>  
> +if BR2_PACKAGE_LIBQMI
> +
> +config BR2_PACKAGE_LIBQMI_UDEV
> +	bool "qmi-firmware-update udev support"
> +	depends on BR2_PACKAGE_HAS_UDEV
> +	select BR2_PACKAGE_LIBGUDEV

libgudev has plenty of other dependencies that you need to propagate
here.

> +	help
> +	  This option enables udev support in the qmi-firmware-update tool
> +
> +config BR2_PACKAGE_LIBQMI_MBIM_QMUX
> +	bool "QMI-over-MBIM support"
> +	select BR2_PACKAGE_LIBMBIM

... and libmbim also has plenty of dependencies that you need to
propagate here, including BR2_PACKAGE_HAS_UDEV.

All in all, isn't it simpler to get rid of those options, and simply do:

ifeq ($(BR2_PACKAGE_LIBGUDEV),y)
... enable support
else
... disable support
endif

ifeq ($(BR2_PACKAGE_LIBMBIM),y)
... enable support
else
... disable support
endif

Thanks!

Thomas
Aleksander Morgado Sept. 5, 2017, 7:45 p.m. UTC | #2
Hey

>
> On Tue,  5 Sep 2017 12:03:27 +0200, Aleksander Morgado wrote:
>> Don't always build without udev, as qmi-firmware-update would be very
>> very limited in that case. Instead, make it optional: if there is udev
>> support in the setup, require libgudev and configure using --with-udev
>> explicitly; otherwise just --without-udev.
>>
>> Also, add the qmi-over-mbim feature as optional, and require libmbim
>> if we're building with it enabled.
>>
>> Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
>> ---
>>  package/libqmi/Config.in | 18 ++++++++++++++++++
>>  package/libqmi/libqmi.mk | 18 ++++++++++++++++--
>>  2 files changed, 34 insertions(+), 2 deletions(-)
>>
>> diff --git a/package/libqmi/Config.in b/package/libqmi/Config.in
>> index f1d111b7c..a536650b5 100644
>> --- a/package/libqmi/Config.in
>> +++ b/package/libqmi/Config.in
>> @@ -10,6 +10,24 @@ config BR2_PACKAGE_LIBQMI
>>
>>         http://www.freedesktop.org/wiki/Software/libqmi/
>>
>> +if BR2_PACKAGE_LIBQMI
>> +
>> +config BR2_PACKAGE_LIBQMI_UDEV
>> +     bool "qmi-firmware-update udev support"
>> +     depends on BR2_PACKAGE_HAS_UDEV
>> +     select BR2_PACKAGE_LIBGUDEV
>
> libgudev has plenty of other dependencies that you need to propagate
> here.
>
>> +     help
>> +       This option enables udev support in the qmi-firmware-update tool
>> +
>> +config BR2_PACKAGE_LIBQMI_MBIM_QMUX
>> +     bool "QMI-over-MBIM support"
>> +     select BR2_PACKAGE_LIBMBIM
>
> ... and libmbim also has plenty of dependencies that you need to
> propagate here, including BR2_PACKAGE_HAS_UDEV.
>

Oh, I assumed that was somehow automatic... Does this mean that if the
deps of a library are updated at some point in time, all the apps
depending on the library also need to get updated to add the new dep?

> All in all, isn't it simpler to get rid of those options, and simply do:
>
> ifeq ($(BR2_PACKAGE_LIBGUDEV),y)
> ... enable support
> else
> ... disable support
> endif
>
> ifeq ($(BR2_PACKAGE_LIBMBIM),y)
> ... enable support
> else
> ... disable support
> endif
>

Yes, probably that's a much simpler option. Will suggest a new patch.

Thanks for reviewing!
Thomas Petazzoni Sept. 6, 2017, 6:54 a.m. UTC | #3
Hello,

On Tue, 5 Sep 2017 21:45:19 +0200, Aleksander Morgado wrote:

> > ... and libmbim also has plenty of dependencies that you need to
> > propagate here, including BR2_PACKAGE_HAS_UDEV.
> >  
> 
> Oh, I assumed that was somehow automatic... Does this mean that if the
> deps of a library are updated at some point in time, all the apps
> depending on the library also need to get updated to add the new dep?

Yes, exactly. When we review patches adding new dependencies to an
existing package, we are always careful that those new dependencies are
propagated.

> Yes, probably that's a much simpler option. Will suggest a new patch.

Thanks!

Thomas
Aleksander Morgado Sept. 6, 2017, 8:38 a.m. UTC | #4
>
> All in all, isn't it simpler to get rid of those options, and simply do:
>
> ifeq ($(BR2_PACKAGE_LIBGUDEV),y)
> ... enable support

When doing this, should I also include a direct dependency on
libgudev, so that libgudev is built before libqmi always?
LIBQMI_DEPENDENCIES += libgudev

> else
> ... disable support
> endif
>
Thomas Petazzoni Sept. 6, 2017, 11:32 a.m. UTC | #5
Hello,

On Wed, 6 Sep 2017 10:38:25 +0200, Aleksander Morgado wrote:

> > All in all, isn't it simpler to get rid of those options, and simply do:
> >
> > ifeq ($(BR2_PACKAGE_LIBGUDEV),y)
> > ... enable support  
> 
> When doing this, should I also include a direct dependency on
> libgudev, so that libgudev is built before libqmi always?
> LIBQMI_DEPENDENCIES += libgudev

Well, if you don't do this, libgudev is not guaranteed to be built
before libqmi, so you would get a build failure, right ?

The canonical way to express optional dependencies is:

ifeq ($(BR2_PACKAGE_FOO),y)
BAR_DEPENDENCIES += foo
BAR_CONF_OPTS += --enable-foo
else
BAR_CONF_OPTS += --disable-foo
endif

Best regards,

Thomas
diff mbox series

Patch

diff --git a/package/libqmi/Config.in b/package/libqmi/Config.in
index f1d111b7c..a536650b5 100644
--- a/package/libqmi/Config.in
+++ b/package/libqmi/Config.in
@@ -10,6 +10,24 @@  config BR2_PACKAGE_LIBQMI
 
 	  http://www.freedesktop.org/wiki/Software/libqmi/
 
+if BR2_PACKAGE_LIBQMI
+
+config BR2_PACKAGE_LIBQMI_UDEV
+	bool "qmi-firmware-update udev support"
+	depends on BR2_PACKAGE_HAS_UDEV
+	select BR2_PACKAGE_LIBGUDEV
+	help
+	  This option enables udev support in the qmi-firmware-update tool
+
+config BR2_PACKAGE_LIBQMI_MBIM_QMUX
+	bool "QMI-over-MBIM support"
+	select BR2_PACKAGE_LIBMBIM
+	help
+	  This option enables support to use the QMI protocol over MBIM
+	  for modems with MBIM_SERVICE_QMI capabilities
+
+endif
+
 comment "libqmi needs a toolchain w/ wchar, threads"
 	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/libqmi/libqmi.mk b/package/libqmi/libqmi.mk
index 917265f4b..129fd0fb6 100644
--- a/package/libqmi/libqmi.mk
+++ b/package/libqmi/libqmi.mk
@@ -15,7 +15,21 @@  LIBQMI_AUTORECONF = YES
 
 LIBQMI_DEPENDENCIES = libglib2
 
-# we don't want -Werror and disable gudev Gobject bindings
-LIBQMI_CONF_OPTS = --enable-more-warnings=no --without-udev
+# we don't want -Werror
+LIBQMI_CONF_OPTS = --enable-more-warnings=no
+
+ifeq ($(BR2_PACKAGE_LIBQMI_UDEV),y)
+LIBQMI_DEPENDENCIES += libgudev
+LIBQMI_CONF_OPTS += --with-udev
+else
+LIBQMI_CONF_OPTS += --without-udev
+endif
+
+ifeq ($(BR2_PACKAGE_LIBQMI_MBIM_QMUX),y)
+LIBQMI_DEPENDENCIES += libmbim
+LIBQMI_CONF_OPTS += --enable-mbim-qmux
+else
+LIBQMI_CONF_OPTS += --disable-mbim-qmux
+endif
 
 $(eval $(autotools-package))