Please remove qtmultimedia private headers usage to work with Qt 5.2

Bug #1267818 reported by Timo Jyrinki on 2014-01-10
20
This bug affects 2 people
Affects Status Importance Assigned to Milestone
qtubuntu-camera (Ubuntu)
Critical
Timo Jyrinki
qtubuntu-cameraplugin-fake (Ubuntu)
Medium
Timo Jyrinki
qtubuntu-media (Ubuntu)
Critical
Ricardo Salveti
qtvideo-node (Ubuntu)
Critical
Ricardo Salveti

Bug Description

Hi. Please consider dropping usage of Qt Multimedia's private headers from qtvideo-node and qtubuntu-camera, or more exactly the build dependency on qtmultimedia5-private-dev. If there is a need that cannot dropped, consider if it could be suggested to upstream to change something a bit by explaining the use case.

Debian is dropping all private headers that are not required to build Qt itself, and using of private headers is discouraged anyhow. We've synced with Debian for Qt 5.2, and therefore qtvideo-node and qtubuntu-camera (and anything that depends on those) are not building at the moment.

Buidl logs
 https://launchpadlibrarian.net/162112906/buildlog_ubuntu-trusty-amd64.qtvideo-node_1%3A0.2.1%2B14.04.20131223.1-0~43~ubuntu14.04.1_FAILEDTOBUILD.txt.gz
 https://launchpadlibrarian.net/162113257/buildlog_ubuntu-trusty-amd64.qtubuntu-camera_1%3A0.3.3%2B13.10.20130919.2-0~85.1~ubuntu14.04.1_FAILEDTOBUILD.txt.gz

This bug is similar in spirit to bug #1254051 which was fixed for qtubuntu, when qtsensors private headers were dropped.

---

Instructions on upgrading to Qt 5.2 (either desktop or device) are visible at https://launchpad.net/~canonical-qt5-edgers/+archive/qt5-beta2 page.

Related branches

summary: - Please remove qtmultimedia private headers usage from qtvideo-node, to
- work with Qt 5.2
+ Please remove qtmultimedia private headers usage to work with Qt 5.2
description: updated
description: updated
Changed in qtubuntu-camera (Ubuntu):
importance: Undecided → High
Changed in qtubuntu-camera (Ubuntu):
importance: High → Critical
Changed in qtvideo-node (Ubuntu):
importance: High → Critical
Changed in qtubuntu-camera (Ubuntu):
status: New → Fix Committed
Jim Hodapp (jhodapp) wrote :

I'll take a look at this to see if it's required for qtvideo-node with my work on media-hub. I'll also take a look at this for qtubuntu-media.

Changed in qtvideo-node (Ubuntu):
assignee: nobody → Jim Hodapp (jhodapp)
status: New → Confirmed
Changed in qtubuntu-media (Ubuntu):
assignee: nobody → Jim Hodapp (jhodapp)
status: New → Confirmed
Changed in qtubuntu-cameraplugin-fake (Ubuntu):
status: New → Confirmed
Bill Filler (bfiller) on 2014-01-21
Changed in qtubuntu-media (Ubuntu):
assignee: Jim Hodapp (jhodapp) → Ricardo Salveti (rsalveti)
Changed in qtvideo-node (Ubuntu):
assignee: Jim Hodapp (jhodapp) → Ricardo Salveti (rsalveti)
Bill Filler (bfiller) on 2014-01-21
Changed in qtubuntu-media (Ubuntu):
importance: Undecided → Critical
Changed in qtubuntu-cameraplugin-fake (Ubuntu):
importance: Undecided → Medium
Albert Astals Cid (aacid) wrote :
Changed in qtubuntu-cameraplugin-fake (Ubuntu):
status: Confirmed → In Progress
Changed in qtubuntu-media (Ubuntu):
status: Confirmed → Fix Committed
Changed in qtubuntu-cameraplugin-fake (Ubuntu):
status: In Progress → Fix Committed
Timo Jyrinki (timo-jyrinki) wrote :

qtvideo-node seems to depend on at least qsgvideonode_p.h which is a private header and not available anymore.

Albert Astals Cid (aacid) wrote :

qsgvideonode_p.h is still there and is installed as private header by qtmultimedia as you can see in https://qt.gitorious.org/qt/qtmultimedia/source/819f30df336ec58ec487f19919ade198d016826d:src/qtmultimediaquicktools/qtmultimediaquicktools.pro

Timo Jyrinki (timo-jyrinki) wrote :

Yes, it's in the sources but the private headers were dropped from the packaging. So it's "not there" in the Debian + Ubuntu packaging anymore, so it's wished for we wouldn't need to differentiate from Debian packaging by looking into whether it could be workarounded.

Timo Jyrinki (timo-jyrinki) wrote :

Jim (or Ricardo), any update on qtvideo-node?

Jim Hodapp (jhodapp) wrote :

I'm not exactly sure what to do about qtvideo-node, because a class directly inherits from QSGVideoNode which is contained in qsgvideonode_p.h. I haven't been able to locate an alternate header file to include that provides for this class. A search for that class reveals 0 results on Qt's documentation search. Any suggestions?

Albert Astals Cid (aacid) wrote :

If we totally need that class and we totally can't use qtmultimedia private headers (which is a weird restriction since e.g. we're using qtdeclarative private headers a lot) I guess your only solution would be convincing Qt upstream to make that class public explaining our usecase. But I guess they'll suggest you use the private header :D

Of course the evil solution is just copying the private header over to qtvideo-node sources, but i would never suggest that :D

Timo Jyrinki (timo-jyrinki) wrote :

Ha, I should have refreshed this page earlier, since I just sent an e-mail mentioning this bug :)

I think it's worth filing a bug upstream (https://bugreports.qt-project.org/) to ask whether the class could be made public? I mean, if there's an use case they don't consider evil that should be allowed with public headers.

We can stay forking qtmultimedia packaging as well, but it's just not the preferred option. I guess it'd be however less ugly than copying the private header.

Ricardo Salveti (rsalveti) wrote :

As we're already maintaining qtvideo-node, I'd just vote to copy it over so you can sync the package without changes from Debian (but also check with upstream what can be done in the right way).

Timo Jyrinki (timo-jyrinki) wrote :

I tried hacking something quickly, and pushed a branch to under lp:~phablet-team/qtvideo-node/support_qt52 where it can be co-worked. Could someone who knows a bit more what he's doing than me look at it and see if it could be finished? :)

I copied qsgvideonode_p.h and qtmultimediaquickdefs_p.h to the sources for build to succeed with only qtdeclarative5-private-dev and qtmultimedia5-dev. I additionally noticed that QSGMaterial had moved to under a subdirectory in Qt 5.2 so there needed to be #ifdef for that.

It built fine against Qt 5.2:
https://launchpad.net/~canonical-qt5-edgers/+archive/qt5-beta2/+sourcepub/3883608/+listing-archive-extra

Unit tests were disabled since there's a linker error. But at least this gives the PPA the package so that cameraplugin-aal and qtvideo-node itself do not need to be removed when upgrading.

description: updated
Jim Hodapp (jhodapp) wrote :

Thanks Timo, I'll test this out for you soon and let you know if it works ok. Thanks for helping move qtvideo-node along.

Changed in qtubuntu-cameraplugin-fake (Ubuntu):
assignee: nobody → rosa maria (rprosamaria383)
Changed in qtubuntu-camera (Ubuntu):
assignee: nobody → rosa maria (rprosamaria383)
Pat McGowan (pat-mcgowan) wrote :

Is this resolved?

Timo Jyrinki (timo-jyrinki) wrote :

No. The qtvideo-node still has only the hacked + tests disabled manual upload in the archives, while Jim promised to work on this. Since camera depends on qtvideo-node, I believe this bug is why the camera shuts down on startup bug #1277160.

Jim Hodapp (jhodapp) wrote :

Fix is committed and approved, just waiting for merge approval.

Changed in qtvideo-node (Ubuntu):
status: Confirmed → Fix Committed
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package qtvideo-node - 0.2.1+14.04.20140304-0ubuntu1

---------------
qtvideo-node (0.2.1+14.04.20140304-0ubuntu1) trusty; urgency=low

  [ Ubuntu daily release ]
  * New rebuild forced

  [ Ricardo Salveti de Araujo ]
  * Initial Qt 5.2 support. Copy two header files from qtmultimedia
    private headers. Only use Qt Declarative private headers (quick-
    private) otherwise, and use version detection to support both 5.0
    and 5.2. Disable unit tests temporarily. (LP: #1267818)

  [ Timo Jyrinki ]
  * Initial Qt 5.2 support. Copy two header files from qtmultimedia
    private headers. Only use Qt Declarative private headers (quick-
    private) otherwise, and use version detection to support both 5.0
    and 5.2. Disable unit tests temporarily. (LP: #1267818)
 -- Ubuntu daily release <email address hidden> Tue, 04 Mar 2014 13:44:19 +0000

Changed in qtvideo-node (Ubuntu):
status: Fix Committed → Fix Released
Changed in qtubuntu-camera (Ubuntu):
status: Fix Committed → Fix Released
Changed in qtubuntu-cameraplugin-fake (Ubuntu):
status: Fix Committed → Fix Released
Changed in qtubuntu-media (Ubuntu):
status: Fix Committed → Fix Released
Changed in qtubuntu-camera (Ubuntu):
assignee: rosa maria (rprosamaria383) → nobody
Changed in qtubuntu-cameraplugin-fake (Ubuntu):
assignee: rosa maria (rprosamaria383) → nobody
Changed in qtubuntu-camera (Ubuntu):
assignee: nobody → rosa maria (rprosamaria383)
Changed in qtubuntu-cameraplugin-fake (Ubuntu):
assignee: nobody → rosa maria (rprosamaria383)
Changed in qtubuntu-camera (Ubuntu):
assignee: rosa maria (rprosamaria383) → nobody
assignee: nobody → rosa maria (rprosamaria383)
Changed in qtubuntu-camera (Ubuntu):
assignee: rosa maria (rprosamaria383) → Timo Jyrinki (timo-jyrinki)
Changed in qtubuntu-cameraplugin-fake (Ubuntu):
assignee: rosa maria (rprosamaria383) → Timo Jyrinki (timo-jyrinki)
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers