Re: [Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-11 Thread Thiago Macieira
On Friday 12 December 2014 02:36:11 Kevin Kofler wrote:
> Blasche Alexander wrote:
> > Personally, I think it is rather useless to enable QtDBus on for example
> > Windows. Yes, its better cross-platform programming and there are some
> > esoteric guys/projects who use dbus at this stage on Windows.
> 
> The kdewin (KDE on Windows; in particular, ports of KDE applications to
> Windows) project uses it. I don't think kdewin qualifies as "esoteric".

Turns out that KDE on Windows never even attempted to run the QtDBus unit 
tests on Windows. I know that because they simply didn't run on Windows or 
even compile there.

I've just pushed a sequence of fixes (101957 through 101967) that make the 
tests work on Windows.
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-11 Thread Kevin Kofler
Blasche Alexander wrote:
> Personally, I think it is rather useless to enable QtDBus on for example
> Windows. Yes, its better cross-platform programming and there are some
> esoteric guys/projects who use dbus at this stage on Windows.

The kdewin (KDE on Windows; in particular, ports of KDE applications to 
Windows) project uses it. I don't think kdewin qualifies as "esoteric".

Kevin Kofler

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-11 Thread Thiago Macieira
On Thursday 11 December 2014 08:40:20 Blasche Alexander wrote:
> So far there are two cases:
> 
> 1.) no dbus (nice qmake check to cut for Windows, Android and some other
> platforms) 
> 2.) dbus available but no daemon or permission issues
> (QDbusConnection::connectToBus(...).isConnected()) 
> 3.) all working and enabled

Off by one error?

Actually, it's a little more complex than that. D-Bus is useful on Windows 
too, just like on OS X, which was the cause of the changes. It just happens 
that we built QtDBus for OS X but not for Windows. And as I learned yesterday, 
no one has EVER built the QtDBus unit tests on Windows.

By default, on OS X with just our build, you'll get a slightly different 
scenario you didn't list: QtDBus available but no libdbus-1. However, if 
libdbus-1 isn't present, the daemon most likely isn't either, so we could say 
it's case #2.

> Consequences of eventual 5.5 changes:
> 
> - Now I cannot use point 1. above anymore to compile dbus backends out on
> platforms where DBus is useless anyway. That's doable by emulating your
> platform specific enabler in my own modules of course. I guess this is just
> convenience which I lost.

Correct. I expect you to know where D-Bus isn't useful to you, as opposed to 
having me force that upon you. There are legitimate reasons to use D-Bus on OS 
X and Windows, even on Android. So I'm just giving you the tools, you choose 
what use to make of them.

> - Case 2 above is even further overloaded. How do I distinguish the
> no-daemon case from permission issues from dlopen failures. Any new API
> calls for that? This is especially important when you don't want to do the
> "compile dbus out on win" checks in qmake. Do I have to duplicate your
> dlopen() attempt to figure that out? How about a
> "QDBusConnection::platformSupportsDbus()" call?

It's not more further overloaded than it already is. Like I said above for 
OS X, your case here was already present. No one has required this check in 
the 7 years since we began dlopen'ing libdbus-1.

> What were your reasons/motivation?

Fixing Qt 5.4 after the last-minute changes for 5.4.0 that were introduced to 
unbreak the build on OS X. This is not a policy change. It just so happens 
that we now *can* build QtDBus on all of those OS, so we will. Previously, we 
couldn't.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-11 Thread Thiago Macieira
On Thursday 11 December 2014 14:14:06 Morten Johan Sørvig wrote:
> I’m wondering, do we want to keep the “none” behavior to “runtime” for OS X?
> 
> libdbus-1 (and pkg-config) may be installed for two reasons:
> 1) As a dependency for Qt.
> 2) As a dependency for something else (some other homebrew package, or an
> unrelated dev project).
> 
> I think 2) is more common, and that a default Qt build should use stock OS X
> only.

Task QTBUG-14131 asks to make "runtime" the default on OS X but "linked" the 
default everywhere else. That's how I started with 
https://codereview.qt-project.org/100573

However, I later decided to remove the OS X-specific check. Why have it in the 
first place? The reason why we concluded in that task to ask for the runtime as 
the default for OS X was because we required the libdbus-1 headers. Now we 
don't: we can compile QtDBus without libdbus-1, which is the default situation 
in OS X.

In any case, I just think we shouldn't special-case it.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-11 Thread Morten Johan Sørvig

> On 11 Dec 2014, at 02:42, Thiago Macieira  wrote:
> 
> Dear all
> 
> My well-intentioned changes to unbreak the building of the OS X builds for 
> 5.4.0 have apparently had unexpected consequences. After reviewing the 
> situation, I've created https://codereview.qt-project.org/101843 to fix the 
> issues (note: updates for Windows pending). Once that one is in 5.4 and 
> merged 
> to 5.5, I'll submit another fix for 5.5 changing the configure behaviour.
> 
> configure option: Qt 5.4.0Qt 5.4.1
> Qt 5.5†
> none  configure1  runtime configure2
> -dbus runtime runtime configure2
> -dbus-linked  linked  linked  linked
> --dbus=runtimeruntime runtime runtime
> -no-dbus  disableddisabled
> disabled
> 
> Explanation:
> * runtime: dynamically open libdbus-1 at runtime
> * linked: link to libdbus-1
> * configure1: check at configure time if libdbus-1 is present in the system 
>   and then enable "runtime" mode
> * configure2: check at configure time if libdbus-1 is present in the system;
>   if it is, enable "linked" mode, otherwise "runtime"
> 
> In other words: starting with Qt 5.4.1, QtDBus will be enabled FOR ALL 
> BUILDS. 
> The library is safe enough in dynamic mode that it will simply say that it 
> could not connect to the bus or peer, so it should not be a problem to have 
> it 
> present.
> 
> †: unless we get the rewrite to drop libdbus-1 requirements in time for 5.5, 
> but I think it's unlikely. Maybe Qt 5.6.

I’m wondering, do we want to keep the “none” behavior to “runtime” for OS X?

libdbus-1 (and pkg-config) may be installed for two reasons:
1) As a dependency for Qt.
2) As a dependency for something else (some other homebrew package, or an 
unrelated dev project).

I think 2) is more common, and that a default Qt build should use stock OS X 
only.

Morten

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-11 Thread Roland Winklmeier
To me this is amazing news. I'm using DBus on all platforms since nearly 2
years and always had to build Qt myself instead of using the official
installers because of missing QtDBus libraries. They are shipped for Mac OS
X meanwhile, but Windows was still a burden.

2014-12-11 9:40 GMT+01:00 Blasche Alexander <
alexander.blas...@theqtcompany.com>:

>
> Personally, I think it is rather useless to enable QtDBus on for example
> Windows. Yes, its better cross-platform programming and there are some
> esoteric guys/projects who use dbus at this stage on Windows. However the
> default setting to enable it for the esoteric use case means you ship tons
> more code for nothing. Alternatives might have been to only enable it when
> specifically requested only (aka change your configure2 option to disabled
> on windows if no dbus option passed) or even compile the lib against some
> no-op code (which would satisfy the true cross platform development use
> case). I guess you might argue that QtDBus is not that large but without
> more strict qmake changes you may create more code to be shipped in other
> modules/projects too.
>

I don't think my project or myself is esoteric. As said DBus is used by my
application successfully on all platforms including Windows for over two
years now. libdbus is running on Windows for even longer. Several people
have stated in this mailing list, they would appreciate QtDBus to be
shipped also on Windows. I wonder on which facts you have based the
statement that this is useless. Were there any problems reported, did
anyone complain it is not working etc? IMHO there are only few people using
it on Windows, because it hasn't been shipped yet and not everyone is
building Qt themselves.

DBus is a great cross platform solution and it is good to enable it on all
platforms. If someone doesn't like it, don't use it.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-11 Thread Blasche Alexander

From: development-bounces+alexander.blasche=theqtcompany@qt-project.org 
 on 
behalf of Thiago Macieira 

>Clarifying after question on IRC: will be enabled by default for all builds on
>all OS. Unless you pass -no-dbus, of course.

What's the runtime call that let's me determine what the state of the dbus 
union is on the system?

So far there are two cases:

1.) no dbus (nice qmake check to cut for Windows, Android and some other 
platforms)
2.) dbus available but no daemon or permission issues 
(QDbusConnection::connectToBus(...).isConnected())
3.) all working and enabled

Consequences of eventual 5.5 changes:

- Now I cannot use point 1. above anymore to compile dbus backends out on 
platforms where DBus is useless anyway. That's doable by emulating your 
platform specific enabler in my own modules of course. I guess this is just 
convenience which I lost.

- Case 2 above is even further overloaded. How do I distinguish the no-daemon 
case from permission issues from dlopen failures. Any new API calls for that? 
This is especially important when you don't want to do the "compile dbus out on 
win" checks in qmake. Do I have to duplicate your dlopen() attempt to figure 
that out? How about a "QDBusConnection::platformSupportsDbus()" call?

Personally, I think it is rather useless to enable QtDBus on for example 
Windows. Yes, its better cross-platform programming and there are some esoteric 
guys/projects who use dbus at this stage on Windows. However the default 
setting to enable it for the esoteric use case means you ship tons more code 
for nothing. Alternatives might have been to only enable it when specifically 
requested only (aka change your configure2 option to disabled on windows if no 
dbus option passed) or even compile the lib against some no-op code (which 
would satisfy the true cross platform development use case). I guess you might 
argue that QtDBus is not that large but without more strict qmake changes you 
may create more code to be shipped in other modules/projects too.

What were your reasons/motivation?


--
Alex
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-11 Thread Thiago Macieira
On Thursday 11 December 2014 08:41:22 Kurt Pattyn wrote:
> > On 11 Dec 2014, at 08:30, Thiago Macieira  
wrote:
> >> On Wednesday 10 December 2014 17:42:06 Thiago Macieira wrote:
> >> Explanation:
> >> * runtime: dynamically open libdbus-1 at runtime
> >> * linked: link to libdbus-1
> >> * configure1: check at configure time if libdbus-1 is present in the
> >> system  and then enable "runtime" mode
> >> * configure2: check at configure time if libdbus-1 is present in the
> >> system; if it is, enable "linked" mode, otherwise "runtime"
> >> 
> >> In other words: starting with Qt 5.4.1, QtDBus will be enabled FOR ALL
> >> BUILDS.
> > 
> > Clarifying after question on IRC: will be enabled by default for all
> > builds on all OS. Unless you pass -no-dbus, of course.
> 
> Will it be enabled using configure1 or configure2?

As of 5.4.1.

In 5.4.0, it tries to find the headers before deciding that it doesn't need 
them.
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-10 Thread Kurt Pattyn




> On 11 Dec 2014, at 08:30, Thiago Macieira  wrote:
> 
>> On Wednesday 10 December 2014 17:42:06 Thiago Macieira wrote:
>> Explanation:
>> * runtime: dynamically open libdbus-1 at runtime
>> * linked: link to libdbus-1
>> * configure1: check at configure time if libdbus-1 is present in the
>> system  and then enable "runtime" mode
>> * configure2: check at configure time if libdbus-1 is present in the
>> system; if it is, enable "linked" mode, otherwise "runtime"
>> 
>> In other words: starting with Qt 5.4.1, QtDBus will be enabled FOR ALL
>> BUILDS. 
> 
> Clarifying after question on IRC: will be enabled by default for all builds 
> on 
> all OS. Unless you pass -no-dbus, of course.
Will it be enabled using configure1 or configure2?

> -- 
> Thiago Macieira - thiago.macieira (AT) intel.com
>  Software Architect - Intel Open Source Technology Center
> 
> ___
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-10 Thread Thiago Macieira
On Wednesday 10 December 2014 17:42:06 Thiago Macieira wrote:
> Explanation:
>  * runtime: dynamically open libdbus-1 at runtime
>  * linked: link to libdbus-1
>  * configure1: check at configure time if libdbus-1 is present in the
> system  and then enable "runtime" mode
>  * configure2: check at configure time if libdbus-1 is present in the
> system; if it is, enable "linked" mode, otherwise "runtime"
> 
> In other words: starting with Qt 5.4.1, QtDBus will be enabled FOR ALL
> BUILDS. 

Clarifying after question on IRC: will be enabled by default for all builds on 
all OS. Unless you pass -no-dbus, of course.
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


[Development] Enabling of QtDBus in Qt 5.4 and 5.5

2014-12-10 Thread Thiago Macieira
Dear all

My well-intentioned changes to unbreak the building of the OS X builds for 
5.4.0 have apparently had unexpected consequences. After reviewing the 
situation, I've created https://codereview.qt-project.org/101843 to fix the 
issues (note: updates for Windows pending). Once that one is in 5.4 and merged 
to 5.5, I'll submit another fix for 5.5 changing the configure behaviour.

configure option:   Qt 5.4.0Qt 5.4.1
Qt 5.5†
 none   configure1  runtime configure2
 -dbus  runtime runtime configure2
 -dbus-linked   linked  linked  linked
 --dbus=runtime runtime runtime runtime
 -no-dbus   disableddisabled
disabled

Explanation:
 * runtime: dynamically open libdbus-1 at runtime
 * linked: link to libdbus-1
 * configure1: check at configure time if libdbus-1 is present in the system 
   and then enable "runtime" mode
 * configure2: check at configure time if libdbus-1 is present in the system;
   if it is, enable "linked" mode, otherwise "runtime"

In other words: starting with Qt 5.4.1, QtDBus will be enabled FOR ALL BUILDS. 
The library is safe enough in dynamic mode that it will simply say that it 
could not connect to the bus or peer, so it should not be a problem to have it 
present.

†: unless we get the rewrite to drop libdbus-1 requirements in time for 5.5, 
but I think it's unlikely. Maybe Qt 5.6.
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development