diff mbox series

[1/1] package/qt5enginio: needs ssl

Message ID 20190309222953.7785-1-fontaine.fabrice@gmail.com
State Superseded
Headers show
Series [1/1] package/qt5enginio: needs ssl | expand

Commit Message

Fabrice Fontaine March 9, 2019, 10:29 p.m. UTC
Remove select on BR2_PACKAGE_QT5BASE and BR2_PACKAGE_OPENSSL to avoid a
circular dependency

Fixes:
 - http://autobuild.buildroot.org/results/60678cab68ec9aa17184b8417b64b3b79adf428a

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 package/qt5/qt5enginio/Config.in | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Thomas Petazzoni March 12, 2019, 10:29 p.m. UTC | #1
Hello Fabrice,

On Sat,  9 Mar 2019 23:29:53 +0100
Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:

> Remove select on BR2_PACKAGE_QT5BASE and BR2_PACKAGE_OPENSSL to avoid a
> circular dependency

I don't really understand where the "circular dependency" is.

To me it seems like the problem is rather:

"""
Qt 5.6 SSL support is no longer available with OpenSSL since the bump
of OpenSSL to 1.1.x. Therefore selecting Qt5 and OpenSSL does not
guarantee that qt5base will be built with SSL support. Due to this, the
build of qt5enginio currently fails on Qt 5.6.
"""

> diff --git a/package/qt5/qt5enginio/Config.in b/package/qt5/qt5enginio/Config.in
> index 102058e7c5..cce0f2a1cb 100644
> --- a/package/qt5/qt5enginio/Config.in
> +++ b/package/qt5/qt5enginio/Config.in
> @@ -1,7 +1,6 @@
>  config BR2_PACKAGE_QT5ENGINIO
>  	bool "qt5enginio"
> -	select BR2_PACKAGE_OPENSSL
> -	select BR2_PACKAGE_QT5BASE
> +	depends on BR2_PACKAGE_QT5BASE_OPENSSL

Either we do this, or:

	select BR2_PACKAGE_OPENSSL if BR2_PACKAGE_QT5_VERSION_LATEST
	select BR2_PACKAGE_LIBRESSL if BR2_PACKAGE_QT5_VERSION_5_6

Best regards,

Thomas
Fabrice Fontaine March 12, 2019, 11:06 p.m. UTC | #2
Hello Thomas,
Le mar. 12 mars 2019 à 23:29, Thomas Petazzoni
<thomas.petazzoni@bootlin.com> a écrit :
>
> Hello Fabrice,
>
> On Sat,  9 Mar 2019 23:29:53 +0100
> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
>
> > Remove select on BR2_PACKAGE_QT5BASE and BR2_PACKAGE_OPENSSL to avoid a
> > circular dependency
>
> I don't really understand where the "circular dependency" is.
>
> To me it seems like the problem is rather:
>
> """
> Qt 5.6 SSL support is no longer available with OpenSSL since the bump
> of OpenSSL to 1.1.x. Therefore selecting Qt5 and OpenSSL does not
> guarantee that qt5base will be built with SSL support. Due to this, the
> build of qt5enginio currently fails on Qt 5.6.
> """
>
> > diff --git a/package/qt5/qt5enginio/Config.in b/package/qt5/qt5enginio/Config.in
> > index 102058e7c5..cce0f2a1cb 100644
> > --- a/package/qt5/qt5enginio/Config.in
> > +++ b/package/qt5/qt5enginio/Config.in
> > @@ -1,7 +1,6 @@
> >  config BR2_PACKAGE_QT5ENGINIO
> >       bool "qt5enginio"
> > -     select BR2_PACKAGE_OPENSSL
> > -     select BR2_PACKAGE_QT5BASE
> > +     depends on BR2_PACKAGE_QT5BASE_OPENSSL
>
> Either we do this, or:
>
>         select BR2_PACKAGE_OPENSSL if BR2_PACKAGE_QT5_VERSION_LATEST
>         select BR2_PACKAGE_LIBRESSL if BR2_PACKAGE_QT5_VERSION_5_6
I tried this, but I assume that I must add the dependencies of
libressl if QT 5.6 is true, for example like this:

depends on !BR2_PACKAGE_QT5_VERSION_5_6 || \
                (BR2_PACKAGE_QT5_VERSION_5_6 && \
                (!BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL && \
                !(BR2_TOOLCHAIN_USES_UCLIBC && !BR2_USE_MMU)))

But then, this creates the following circular dependency:

package/sqlcipher/Config.in:1:error: recursive dependency detected!
package/sqlcipher/Config.in:1: symbol BR2_PACKAGE_SQLCIPHER depends on
BR2_PACKAGE_SQLITE
package/sqlite/Config.in:1: symbol BR2_PACKAGE_SQLITE is selected by
BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM
package/qt5/qt5base/Config.in:104: symbol
BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM is part of choice <choice>
package/qt5/qt5base/Config.in:88: choice <choice> contains symbol <choice>
package/qt5/qt5base/Config.in:88: choice <choice> contains symbol
BR2_PACKAGE_QT5BASE
package/qt5/qt5base/Config.in:1: symbol BR2_PACKAGE_QT5BASE is
selected by BR2_PACKAGE_QT5ENGINIO
package/qt5/qt5enginio/Config.in:1: symbol BR2_PACKAGE_QT5ENGINIO
depends on BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
package/openssl/Config.in:1: symbol
BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL is selected by
BR2_PACKAGE_SQLCIPHER

Did I made a mistake? Shouldn't we add the libressl dependencies?
>
> Best regards,
>
> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
Best Regards,

Fabrice
Arnout Vandecappelle March 26, 2019, 10:52 p.m. UTC | #3
On 13/03/2019 00:06, Fabrice Fontaine wrote:
> Hello Thomas,
> Le mar. 12 mars 2019 à 23:29, Thomas Petazzoni
> <thomas.petazzoni@bootlin.com> a écrit :
>>
>> Hello Fabrice,
>>
>> On Sat,  9 Mar 2019 23:29:53 +0100
>> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
>>
>>> Remove select on BR2_PACKAGE_QT5BASE and BR2_PACKAGE_OPENSSL to avoid a
>>> circular dependency
>>
>> I don't really understand where the "circular dependency" is.
>>
>> To me it seems like the problem is rather:
>>
>> """
>> Qt 5.6 SSL support is no longer available with OpenSSL since the bump
>> of OpenSSL to 1.1.x. Therefore selecting Qt5 and OpenSSL does not
>> guarantee that qt5base will be built with SSL support. Due to this, the
>> build of qt5enginio currently fails on Qt 5.6.
>> """
>>
>>> diff --git a/package/qt5/qt5enginio/Config.in b/package/qt5/qt5enginio/Config.in
>>> index 102058e7c5..cce0f2a1cb 100644
>>> --- a/package/qt5/qt5enginio/Config.in
>>> +++ b/package/qt5/qt5enginio/Config.in
>>> @@ -1,7 +1,6 @@
>>>  config BR2_PACKAGE_QT5ENGINIO
>>>       bool "qt5enginio"
>>> -     select BR2_PACKAGE_OPENSSL
>>> -     select BR2_PACKAGE_QT5BASE
>>> +     depends on BR2_PACKAGE_QT5BASE_OPENSSL
>>
>> Either we do this, or:
>>
>>         select BR2_PACKAGE_OPENSSL if BR2_PACKAGE_QT5_VERSION_LATEST
>>         select BR2_PACKAGE_LIBRESSL if BR2_PACKAGE_QT5_VERSION_5_6
> I tried this, but I assume that I must add the dependencies of
> libressl if QT 5.6 is true, for example like this:
> 
> depends on !BR2_PACKAGE_QT5_VERSION_5_6 || \
>                 (BR2_PACKAGE_QT5_VERSION_5_6 && \
>                 (!BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL && \
>                 !(BR2_TOOLCHAIN_USES_UCLIBC && !BR2_USE_MMU)))
> 
> But then, this creates the following circular dependency:
> 
> package/sqlcipher/Config.in:1:error: recursive dependency detected!
> package/sqlcipher/Config.in:1: symbol BR2_PACKAGE_SQLCIPHER depends on
> BR2_PACKAGE_SQLITE
> package/sqlite/Config.in:1: symbol BR2_PACKAGE_SQLITE is selected by
> BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM
> package/qt5/qt5base/Config.in:104: symbol
> BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM is part of choice <choice>
> package/qt5/qt5base/Config.in:88: choice <choice> contains symbol <choice>
> package/qt5/qt5base/Config.in:88: choice <choice> contains symbol
> BR2_PACKAGE_QT5BASE
> package/qt5/qt5base/Config.in:1: symbol BR2_PACKAGE_QT5BASE is
> selected by BR2_PACKAGE_QT5ENGINIO
> package/qt5/qt5enginio/Config.in:1: symbol BR2_PACKAGE_QT5ENGINIO
> depends on BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
> package/openssl/Config.in:1: symbol
> BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL is selected by
> BR2_PACKAGE_SQLCIPHER
> 
> Did I made a mistake? Shouldn't we add the libressl dependencies?

 Whaa, kconfig...

 How about just depending on QT5_LATEST || BR2_PACKAGE_QT5BASE_OPENSSL? Or does
that also give a circular dependency?

 Regards,
 Arnout


>>
>> Best regards,
>>
>> Thomas
>> --
>> Thomas Petazzoni, CTO, Bootlin
>> Embedded Linux and Kernel engineering
>> https://bootlin.com
> Best Regards,
> 
> Fabrice
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
Fabrice Fontaine March 27, 2019, 6:08 p.m. UTC | #4
Dear Arnout,

Le mar. 26 mars 2019 à 23:52, Arnout Vandecappelle <arnout@mind.be> a écrit :
>
>
>
> On 13/03/2019 00:06, Fabrice Fontaine wrote:
> > Hello Thomas,
> > Le mar. 12 mars 2019 à 23:29, Thomas Petazzoni
> > <thomas.petazzoni@bootlin.com> a écrit :
> >>
> >> Hello Fabrice,
> >>
> >> On Sat,  9 Mar 2019 23:29:53 +0100
> >> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
> >>
> >>> Remove select on BR2_PACKAGE_QT5BASE and BR2_PACKAGE_OPENSSL to avoid a
> >>> circular dependency
> >>
> >> I don't really understand where the "circular dependency" is.
> >>
> >> To me it seems like the problem is rather:
> >>
> >> """
> >> Qt 5.6 SSL support is no longer available with OpenSSL since the bump
> >> of OpenSSL to 1.1.x. Therefore selecting Qt5 and OpenSSL does not
> >> guarantee that qt5base will be built with SSL support. Due to this, the
> >> build of qt5enginio currently fails on Qt 5.6.
> >> """
> >>
> >>> diff --git a/package/qt5/qt5enginio/Config.in b/package/qt5/qt5enginio/Config.in
> >>> index 102058e7c5..cce0f2a1cb 100644
> >>> --- a/package/qt5/qt5enginio/Config.in
> >>> +++ b/package/qt5/qt5enginio/Config.in
> >>> @@ -1,7 +1,6 @@
> >>>  config BR2_PACKAGE_QT5ENGINIO
> >>>       bool "qt5enginio"
> >>> -     select BR2_PACKAGE_OPENSSL
> >>> -     select BR2_PACKAGE_QT5BASE
> >>> +     depends on BR2_PACKAGE_QT5BASE_OPENSSL
> >>
> >> Either we do this, or:
> >>
> >>         select BR2_PACKAGE_OPENSSL if BR2_PACKAGE_QT5_VERSION_LATEST
> >>         select BR2_PACKAGE_LIBRESSL if BR2_PACKAGE_QT5_VERSION_5_6
> > I tried this, but I assume that I must add the dependencies of
> > libressl if QT 5.6 is true, for example like this:
> >
> > depends on !BR2_PACKAGE_QT5_VERSION_5_6 || \
> >                 (BR2_PACKAGE_QT5_VERSION_5_6 && \
> >                 (!BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL && \
> >                 !(BR2_TOOLCHAIN_USES_UCLIBC && !BR2_USE_MMU)))
> >
> > But then, this creates the following circular dependency:
> >
> > package/sqlcipher/Config.in:1:error: recursive dependency detected!
> > package/sqlcipher/Config.in:1: symbol BR2_PACKAGE_SQLCIPHER depends on
> > BR2_PACKAGE_SQLITE
> > package/sqlite/Config.in:1: symbol BR2_PACKAGE_SQLITE is selected by
> > BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM
> > package/qt5/qt5base/Config.in:104: symbol
> > BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM is part of choice <choice>
> > package/qt5/qt5base/Config.in:88: choice <choice> contains symbol <choice>
> > package/qt5/qt5base/Config.in:88: choice <choice> contains symbol
> > BR2_PACKAGE_QT5BASE
> > package/qt5/qt5base/Config.in:1: symbol BR2_PACKAGE_QT5BASE is
> > selected by BR2_PACKAGE_QT5ENGINIO
> > package/qt5/qt5enginio/Config.in:1: symbol BR2_PACKAGE_QT5ENGINIO
> > depends on BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
> > package/openssl/Config.in:1: symbol
> > BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL is selected by
> > BR2_PACKAGE_SQLCIPHER
> >
> > Did I made a mistake? Shouldn't we add the libressl dependencies?
>
>  Whaa, kconfig...
>
>  How about just depending on QT5_LATEST || BR2_PACKAGE_QT5BASE_OPENSSL? Or does
> that also give a circular dependency?
Yes, adding the select suggested by Thomas and the above dependencies
also give a circular dependency.
The issue is that we can't select BR2_PACKAGE_LIBRESSL without adding
a circular dependency because of the
BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL option that can be selected by
any package that can't work with libressl.
Currently, this option is selected by 4 packages: sqlcipher,
wpa_supplicant, tpm2-tss and softether.
So until this option is removed (if the above packages can work with
libressl), I think my current patch is the only solution.
>
>  Regards,
>  Arnout
>
>
> >>
> >> Best regards,
> >>
> >> Thomas
> >> --
> >> Thomas Petazzoni, CTO, Bootlin
> >> Embedded Linux and Kernel engineering
> >> https://bootlin.com
> > Best Regards,
> >
> > Fabrice
> > _______________________________________________
> > buildroot mailing list
> > buildroot@busybox.net
> > http://lists.busybox.net/mailman/listinfo/buildroot
> >
Best Regards,

Fabrice
Arnout Vandecappelle April 27, 2019, 10:33 p.m. UTC | #5
On 27/03/2019 19:08, Fabrice Fontaine wrote:
> Dear Arnout,
> 
> Le mar. 26 mars 2019 à 23:52, Arnout Vandecappelle <arnout@mind.be> a écrit :
>>
>>
>>
>> On 13/03/2019 00:06, Fabrice Fontaine wrote:
>>> Hello Thomas,
>>> Le mar. 12 mars 2019 à 23:29, Thomas Petazzoni
>>> <thomas.petazzoni@bootlin.com> a écrit :
>>>>
>>>> Hello Fabrice,
>>>>
>>>> On Sat,  9 Mar 2019 23:29:53 +0100
>>>> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
>>>>
>>>>> Remove select on BR2_PACKAGE_QT5BASE and BR2_PACKAGE_OPENSSL to avoid a
>>>>> circular dependency
>>>>
>>>> I don't really understand where the "circular dependency" is.
>>>>
>>>> To me it seems like the problem is rather:
>>>>
>>>> """
>>>> Qt 5.6 SSL support is no longer available with OpenSSL since the bump
>>>> of OpenSSL to 1.1.x. Therefore selecting Qt5 and OpenSSL does not
>>>> guarantee that qt5base will be built with SSL support. Due to this, the
>>>> build of qt5enginio currently fails on Qt 5.6.
>>>> """
>>>>
>>>>> diff --git a/package/qt5/qt5enginio/Config.in b/package/qt5/qt5enginio/Config.in
>>>>> index 102058e7c5..cce0f2a1cb 100644
>>>>> --- a/package/qt5/qt5enginio/Config.in
>>>>> +++ b/package/qt5/qt5enginio/Config.in
>>>>> @@ -1,7 +1,6 @@
>>>>>  config BR2_PACKAGE_QT5ENGINIO
>>>>>       bool "qt5enginio"
>>>>> -     select BR2_PACKAGE_OPENSSL
>>>>> -     select BR2_PACKAGE_QT5BASE
>>>>> +     depends on BR2_PACKAGE_QT5BASE_OPENSSL
>>>>
>>>> Either we do this, or:
>>>>
>>>>         select BR2_PACKAGE_OPENSSL if BR2_PACKAGE_QT5_VERSION_LATEST
>>>>         select BR2_PACKAGE_LIBRESSL if BR2_PACKAGE_QT5_VERSION_5_6
>>> I tried this, but I assume that I must add the dependencies of
>>> libressl if QT 5.6 is true, for example like this:
>>>
>>> depends on !BR2_PACKAGE_QT5_VERSION_5_6 || \
>>>                 (BR2_PACKAGE_QT5_VERSION_5_6 && \
>>>                 (!BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL && \
>>>                 !(BR2_TOOLCHAIN_USES_UCLIBC && !BR2_USE_MMU)))
>>>
>>> But then, this creates the following circular dependency:
>>>
>>> package/sqlcipher/Config.in:1:error: recursive dependency detected!
>>> package/sqlcipher/Config.in:1: symbol BR2_PACKAGE_SQLCIPHER depends on
>>> BR2_PACKAGE_SQLITE
>>> package/sqlite/Config.in:1: symbol BR2_PACKAGE_SQLITE is selected by
>>> BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM
>>> package/qt5/qt5base/Config.in:104: symbol
>>> BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM is part of choice <choice>
>>> package/qt5/qt5base/Config.in:88: choice <choice> contains symbol <choice>
>>> package/qt5/qt5base/Config.in:88: choice <choice> contains symbol
>>> BR2_PACKAGE_QT5BASE
>>> package/qt5/qt5base/Config.in:1: symbol BR2_PACKAGE_QT5BASE is
>>> selected by BR2_PACKAGE_QT5ENGINIO
>>> package/qt5/qt5enginio/Config.in:1: symbol BR2_PACKAGE_QT5ENGINIO
>>> depends on BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
>>> package/openssl/Config.in:1: symbol
>>> BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL is selected by
>>> BR2_PACKAGE_SQLCIPHER
>>>
>>> Did I made a mistake? Shouldn't we add the libressl dependencies?
>>
>>  Whaa, kconfig...
>>
>>  How about just depending on QT5_LATEST || BR2_PACKAGE_QT5BASE_OPENSSL? Or does
>> that also give a circular dependency?
> Yes, adding the select suggested by Thomas and the above dependencies
> also give a circular dependency.
> The issue is that we can't select BR2_PACKAGE_LIBRESSL without adding
> a circular dependency because of the
> BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL option that can be selected by
> any package that can't work with libressl.
> Currently, this option is selected by 4 packages: sqlcipher,
> wpa_supplicant, tpm2-tss and softether.
> So until this option is removed (if the above packages can work with
> libressl), I think my current patch is the only solution.

 I think I got it to work like this:

# This is a hack to avoid circular dependencies when selecting OPENSSL
config BR2_PACKAGE_QT5ENGINIO_SELECT_OPENSSL
	bool
	default y if BR2_PACKAGE_QT5ENGINIO
	select BR2_PACKAGE_OPENSSL

config BR2_PACKAGE_QT5ENGINIO
	bool "qt5enginio"
	depends on !BR2_PACKAGE_QT5_VERSION_5_6 || \
                (BR2_PACKAGE_QT5_VERSION_5_6 && \
                (!BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL && \
                !(BR2_TOOLCHAIN_USES_UCLIBC && !BR2_USE_MMU)))
	select BR2_PACKAGE_QT5BASE_GUI
	select BR2_PACKAGE_QT5BASE_NETWORK


 Could you give that a go?

 Regards,
 Arnout
Fabrice Fontaine April 28, 2019, 9:21 a.m. UTC | #6
Hello Arnout,

Le dim. 28 avr. 2019 à 00:33, Arnout Vandecappelle <arnout@mind.be> a écrit :
>
>
>
> On 27/03/2019 19:08, Fabrice Fontaine wrote:
> > Dear Arnout,
> >
> > Le mar. 26 mars 2019 à 23:52, Arnout Vandecappelle <arnout@mind.be> a écrit :
> >>
> >>
> >>
> >> On 13/03/2019 00:06, Fabrice Fontaine wrote:
> >>> Hello Thomas,
> >>> Le mar. 12 mars 2019 à 23:29, Thomas Petazzoni
> >>> <thomas.petazzoni@bootlin.com> a écrit :
> >>>>
> >>>> Hello Fabrice,
> >>>>
> >>>> On Sat,  9 Mar 2019 23:29:53 +0100
> >>>> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
> >>>>
> >>>>> Remove select on BR2_PACKAGE_QT5BASE and BR2_PACKAGE_OPENSSL to avoid a
> >>>>> circular dependency
> >>>>
> >>>> I don't really understand where the "circular dependency" is.
> >>>>
> >>>> To me it seems like the problem is rather:
> >>>>
> >>>> """
> >>>> Qt 5.6 SSL support is no longer available with OpenSSL since the bump
> >>>> of OpenSSL to 1.1.x. Therefore selecting Qt5 and OpenSSL does not
> >>>> guarantee that qt5base will be built with SSL support. Due to this, the
> >>>> build of qt5enginio currently fails on Qt 5.6.
> >>>> """
> >>>>
> >>>>> diff --git a/package/qt5/qt5enginio/Config.in b/package/qt5/qt5enginio/Config.in
> >>>>> index 102058e7c5..cce0f2a1cb 100644
> >>>>> --- a/package/qt5/qt5enginio/Config.in
> >>>>> +++ b/package/qt5/qt5enginio/Config.in
> >>>>> @@ -1,7 +1,6 @@
> >>>>>  config BR2_PACKAGE_QT5ENGINIO
> >>>>>       bool "qt5enginio"
> >>>>> -     select BR2_PACKAGE_OPENSSL
> >>>>> -     select BR2_PACKAGE_QT5BASE
> >>>>> +     depends on BR2_PACKAGE_QT5BASE_OPENSSL
> >>>>
> >>>> Either we do this, or:
> >>>>
> >>>>         select BR2_PACKAGE_OPENSSL if BR2_PACKAGE_QT5_VERSION_LATEST
> >>>>         select BR2_PACKAGE_LIBRESSL if BR2_PACKAGE_QT5_VERSION_5_6
> >>> I tried this, but I assume that I must add the dependencies of
> >>> libressl if QT 5.6 is true, for example like this:
> >>>
> >>> depends on !BR2_PACKAGE_QT5_VERSION_5_6 || \
> >>>                 (BR2_PACKAGE_QT5_VERSION_5_6 && \
> >>>                 (!BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL && \
> >>>                 !(BR2_TOOLCHAIN_USES_UCLIBC && !BR2_USE_MMU)))
> >>>
> >>> But then, this creates the following circular dependency:
> >>>
> >>> package/sqlcipher/Config.in:1:error: recursive dependency detected!
> >>> package/sqlcipher/Config.in:1: symbol BR2_PACKAGE_SQLCIPHER depends on
> >>> BR2_PACKAGE_SQLITE
> >>> package/sqlite/Config.in:1: symbol BR2_PACKAGE_SQLITE is selected by
> >>> BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM
> >>> package/qt5/qt5base/Config.in:104: symbol
> >>> BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM is part of choice <choice>
> >>> package/qt5/qt5base/Config.in:88: choice <choice> contains symbol <choice>
> >>> package/qt5/qt5base/Config.in:88: choice <choice> contains symbol
> >>> BR2_PACKAGE_QT5BASE
> >>> package/qt5/qt5base/Config.in:1: symbol BR2_PACKAGE_QT5BASE is
> >>> selected by BR2_PACKAGE_QT5ENGINIO
> >>> package/qt5/qt5enginio/Config.in:1: symbol BR2_PACKAGE_QT5ENGINIO
> >>> depends on BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
> >>> package/openssl/Config.in:1: symbol
> >>> BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL is selected by
> >>> BR2_PACKAGE_SQLCIPHER
> >>>
> >>> Did I made a mistake? Shouldn't we add the libressl dependencies?
> >>
> >>  Whaa, kconfig...
> >>
> >>  How about just depending on QT5_LATEST || BR2_PACKAGE_QT5BASE_OPENSSL? Or does
> >> that also give a circular dependency?
> > Yes, adding the select suggested by Thomas and the above dependencies
> > also give a circular dependency.
> > The issue is that we can't select BR2_PACKAGE_LIBRESSL without adding
> > a circular dependency because of the
> > BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL option that can be selected by
> > any package that can't work with libressl.
> > Currently, this option is selected by 4 packages: sqlcipher,
> > wpa_supplicant, tpm2-tss and softether.
> > So until this option is removed (if the above packages can work with
> > libressl), I think my current patch is the only solution.
>
>  I think I got it to work like this:
>
> # This is a hack to avoid circular dependencies when selecting OPENSSL
> config BR2_PACKAGE_QT5ENGINIO_SELECT_OPENSSL
>         bool
>         default y if BR2_PACKAGE_QT5ENGINIO
>         select BR2_PACKAGE_OPENSSL
>
> config BR2_PACKAGE_QT5ENGINIO
>         bool "qt5enginio"
>         depends on !BR2_PACKAGE_QT5_VERSION_5_6 || \
>                 (BR2_PACKAGE_QT5_VERSION_5_6 && \
>                 (!BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL && \
>                 !(BR2_TOOLCHAIN_USES_UCLIBC && !BR2_USE_MMU)))
>         select BR2_PACKAGE_QT5BASE_GUI
>         select BR2_PACKAGE_QT5BASE_NETWORK
>
>
>  Could you give that a go?
It works :-). Should I sent a new version of my patch or do you prefer
to send it as this your solution?
>
>  Regards,
>  Arnout
Best Regards,

Fabrice
Arnout Vandecappelle April 29, 2019, 9:01 a.m. UTC | #7
On 28/04/2019 11:21, Fabrice Fontaine wrote:
> It works :-). Should I sent a new version of my patch or do you prefer
> to send it as this your solution?

 Better if you send it. The comment update is still to do, and that is
complicated as well, so I will not get around to it.

 Regards,
 Arnout
diff mbox series

Patch

diff --git a/package/qt5/qt5enginio/Config.in b/package/qt5/qt5enginio/Config.in
index 102058e7c5..cce0f2a1cb 100644
--- a/package/qt5/qt5enginio/Config.in
+++ b/package/qt5/qt5enginio/Config.in
@@ -1,7 +1,6 @@ 
 config BR2_PACKAGE_QT5ENGINIO
 	bool "qt5enginio"
-	select BR2_PACKAGE_OPENSSL
-	select BR2_PACKAGE_QT5BASE
+	depends on BR2_PACKAGE_QT5BASE_OPENSSL
 	select BR2_PACKAGE_QT5BASE_GUI
 	select BR2_PACKAGE_QT5BASE_NETWORK
 	help