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

Bug#933952: qtbase5-examples: many qtbase5-examples fail to compile - w/solution



Control: reopen -1

Hi Mike, and sorry for the delay.

Your mail was very long so I am replying to some points but not to
all of them (otherwise I would never finish the reply).

On Wed, Aug 07, 2019 at 01:51:01PM -0700, Mike Bird wrote:
> The Qt examples are not like glxgears.  They are fundamentally
> different.  They are not to demonstrate how pretty Qt looks or how
> fast it runs.

Well, I personally used the examples to test whether some of Qt
components work correctly.

E.g. I was working on bugs in upstream dbustray code, and I used the
systray example to check how it works on Plasma, GNOME, etc. I did not
compile it, just ran it.

But I understand your point.

> The orig.tar.xz do not include the precompiled binaries.  Of course
> debuild can build the binaries with all the necessary dependencies
> installed, but it was Debian's decision to ship precompiled binaries
> in the Debian examples packages.  That was not Qt's decision.

It is upstream build system that installs built binaries alongside their
source code. So I would say it is Qt’s decision.

> But just as an aside let's pretend for a moment that Lisandro is
> correct.  Let's try running one of the precompiled binaries.  Go
> ahead on a clean system and install qtwebview5-examples which is
> the package I just finished testing.  Then:
>
> $ /usr/lib/x86_64-linux-gnu/qt5/examples/webview/minibrowser/minibrowser
> QQmlApplicationEngine failed to load component
> qrc:/main.qml:53 module "QtWebView" is not installed

Fixed!
https://salsa.debian.org/qt-kde-team/qt/qtwebview/commit/05b80161ab70e975

While we probably won’t add the dependencies for building the examples,
if some runtime dependency is missing we will add it. Please report such
issues.

> > So we should not add these 
> > dependencies, at most we can add some of these packages to Suggests.
>
> The necessary packages are not essential so they must be dependencies.
> That is the way Debian works.  These packages are fundamentally broken
> without qt5-default and c++-compiler and make and an eclectic mix of
> auxiliary packages.

In my opinion one can do many different ways with the examples:

a) Run them to see how certain code works in practice;
b) Read their source code (maybe copy some bits to one’s own app);
c) Compile them.

a) does not need a compiler. b) does not always need a compiler
(e.g. as a PyQt developer I may copy code from Qt examples but translate it
from C++ to Python).

As these are valid use cases, the compiler should not be a required
dependency.

> Programmers should be able to install the examples packages and have
> them compile without hunting for missing dependencies.  That's the
> whole point of using a distro.  Nobody is going to install the examples
> unless they want to compile them.

As pointed above, there are valid use cases for installing the examples
but not compiling them.

> They is no joy in staring at an example widget that does nothing unless
> you actually intend to build upon it in your own programming.  Or go
> ahead and run
> /usr/lib/x86_64-linux-gnu/qt5/examples/corelib/threads/waitconditions/waitconditions
> and tell me what you learned from merely running it.

Looks like DNA :) But not all examples are like that one.

> > On Mon, Aug 05, 2019 at 06:53:52AM -0700, Mike Bird wrote:
> > > A directory of files and several dependencies are missing from
> > > qtbase5-examples.  Here is how to fix it.
> > >
> > > (1) In the source package, file "examples/vulkan/vulkan.pro", at the
> > >     end add a blank line and then a line containing only
> > >     "EXAMPLE_FILES = shared" (without the quotes).  The resut will
> > >     end up looking like the tail of file "cat
> > > examples/network/network.pro".
> >
> > This sounds like an upstream issue. Please file a bug on bugreports.qt.io
> > or directly submit the patch to codereview.qt-project.org, explaining why
> > this change is needed
>
> With all the various "rm -rf" in debian/rules I would not feel comfortable
> filing bugs upstream against Debian Qt packages.

Outside of clean target, we remove .la files, some .cmake files for plugins
(because they cause issues) and the bootstrap library. I don’t see how this
affects examples.

> >  (you did not explain your problem here).
>
> Without the "shared" directory, a lot of the examples cannot compile.

Well, that means upstream doesn’t care about it either.

We already have many distro patches and I don’t want to carry another one,
so if you think these is a bug upstream please report it to them.

> > As Lisandro explained, nothing should really depend on qt5-default.
> >
> > In fact, Lintian even has a warning for this:
> > https://wiki.debian.org/Lintian/Tags/depends-on-metapackage
>
> The lintian warning has two aspects.  Debian internally should be exporting
> QT_SELECT=qt5 in debian/rules.  That is correct and Debian does.
>
> But the lintian warning also assumes that qt5-default is a metapackage
> which if depended upon restricts users ability to uninstall stuff.  But
> qt5-default depends only on qtbase5-dev and qtchooser.  Yet qtbase5-dev
> depends on qtchooser, and qtchooser is not much use without qtbase5-dev or
> qtbase4-dev, so the lintian warning is inappropriate and should be
> removed or at least overridden for Qt5 examples.
>
> Without qt5-default the examples break with:
>
> $ qmake /usr/lib/x86_64-linux-gnu/qt5/examples/webview/webview.pro
> qmake: could not find a Qt installation of ''

You can call qmake -qt5 and then you won’t need qt5-default.

But we are going to remove Qt 4 this cycle, so I hope qmake without -qt5
will start working some day too.

> > And I think people who really need to *compile* examples will have g++ and
> > qmake/make installed. If they are missing it is quite easy to figure out
> > how to install them.
>
> That's not how dependencies work in Debian.  If you want to make g++ essential
> we can have that conversation but some people might prefer clang.  Meanwhile
> anyone who wants to use Qt examples as they were intended - which is to help
> with programming and not for staring at widgets which don't do anything - is
> going to need the dependencies I have listed.
>
> The fixes are simple.  Someone could have fixed them in the time we've been
> discussing this.  What takes time is figuring out what is wrong.  And it
> makes no sense that every single Qt programmer should have to go through that
> process.

I still wonder how one can be a “Qt programmer” and not have a compiler
installed.

> AND NOW FOR THE IMPORTANT PART ...
>
> I'm not asking you to fix these bugs.  I'm not asking Lisandro to fix these
> bugs.  I recognize that Debian is a do-ocracy.
>
> I'm asking you to re-open this bug and to leave the other related bugs open.

Done.

--
Dmitry Shachnev

Attachment: signature.asc
Description: PGP signature


Reply to: