Skip to contentSkip to conversation

qt/qt5base: force gstreamer on configure

PATCH New Julien Corjon 6 participants 10 messages Aug 6, 2015 – Jan 19, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 qt/qt5base: force gstreamer on configure

---
 package/qt5/qt5base/qt5base.mk | 10 ++++++++++
 1 file changed, 10 insertions(+)
package/qt5/qt5base/qt5base.mk +10 -0
index 753b069..f04545b 100644
@@ -152,6 +152,16 @@ QT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_LIBGLIB2),libglib2)
 QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_ICU),-icu,-no-icu)
 QT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_ICU),icu)
 
+ifeq ($(BR2_PACKAGE_GSTREAMER),y)
+QT5BASE_CONFIGURE_OPTS += -gstreamer 0.10
+QT5BASE_DEPENDENCIES   += gstreamer
+else ifeq ($(BR2_PACKAGE_GSTREAMER1),y)
+QT5BASE_CONFIGURE_OPTS += -gstreamer 1.0
+QT5BASE_DEPENDENCIES   += gstreamer1
+else
+QT5BASE_CONFIGURE_OPTS += -no-gstreamer
+endif
+
 QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_EXAMPLES),-make,-nomake) examples
 
 # Build the list of libraries to be installed on the target
Signature · 1 line
2.1.0
#1 lore raw

PATCH 2/2 qt/qt5multimedia: install gsttools for gstreamer1

---
 package/qt5/qt5multimedia/qt5multimedia.mk | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
package/qt5/qt5multimedia/qt5multimedia.mk +5 -1
index 763fc28..34f3a0a 100644
@@ -22,6 +22,10 @@ ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE),y)
 QT5MULTIMEDIA_DEPENDENCIES += gst-plugins-base
 endif
 
+ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)
+QT5MULTIMEDIA_DEPENDENCIES += gst1-plugins-base
+endif
+
 ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
 QT5MULTIMEDIA_DEPENDENCIES += qt5declarative
 endif
@@ -40,7 +44,7 @@ define QT5MULTIMEDIA_INSTALL_STAGING_CMDS
 endef
 
 ifeq ($(BR2_STATIC_LIBS),)
-ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE),y)
+ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE)$(BR2_PACKAGE_GST1_PLUGINS_BASE),y)
 define QT5MULTIMEDIA_INSTALL_TARGET_QGSTTOOLS_LIB
 	cp -dpf $(STAGING_DIR)/usr/lib/libqgsttools*.so.* $(TARGET_DIR)/usr/lib
 endef
Signature · 1 line
2.1.0
#2 lore raw

PATCH 1/2 qt/qt5base: force gstreamer on configure

In reply to Julien Corjon

Hi Julien,

package/qt5/qt5base/qt5base.mk QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBGLIB2),libglib2) · line 163

Quoted 9 lines · Julien Corjon
package/qt5/qt5base/qt5base.mk +9 -0
+ifeq ($(BR2_PACKAGE_GSTREAMER),y)
+QT5BASE_CONFIGURE_OPTS += -gstreamer 0.10
+QT5BASE_DEPENDENCIES   += gstreamer
+else ifeq ($(BR2_PACKAGE_GSTREAMER1),y)
+QT5BASE_CONFIGURE_OPTS += -gstreamer 1.0
+QT5BASE_DEPENDENCIES   += gstreamer1
+else
+QT5BASE_CONFIGURE_OPTS += -no-gstreamer
+endif

Shouldn't we default to gstreamer 1.0 when both are enabled?

baruch

Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
#3 lore raw

PATCH 1/2 qt/qt5base: force gstreamer on configure

In reply to Julien Corjon

Dear Julien Corjon,

Quoted 6 lines · Julien Corjon
---
 package/qt5/qt5base/qt5base.mk | 10 ++++++++++
 1 file changed, 10 insertions(+)

I'm sorry, but I don't think this is really the source of the problem. I did reproduce this build failure, and even if GStreamer is built before Qt5 (which is the case in the build failure you're linking in the commit log), Qt5 concludes that GStreamer is not available.

And this is because for some reason, Qt5 now seems to ignore the PKG_CONFIG environment variable that we pass to it. I've added some debugging messages to the packagesExist() function, and it uses just "pkg-config" (i.e the system pkg-config, not the one built and installed by Buildroot in $(HOST_DIR)/usr/bin).

While I think that your patch should be applied (it's good to make optional dependencies explicit), I also think the pkg-config problem should be investigated and fixed.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#4 lore raw

PATCH 1/2 qt/qt5base: force gstreamer on configure

Quoted 21 lines · Thomas Petazzoni

Dear Julien Corjon,

Quoted 6 lines · Julien Corjon
---
  package/qt5/qt5base/qt5base.mk | 10 ++++++++++
  1 file changed, 10 insertions(+)

I'm sorry, but I don't think this is really the source of the problem. I did reproduce this build failure, and even if GStreamer is built before Qt5 (which is the case in the build failure you're linking in the commit log), Qt5 concludes that GStreamer is not available.

And this is because for some reason, Qt5 now seems to ignore the PKG_CONFIG environment variable that we pass to it. I've added some debugging messages to the packagesExist() function, and it uses just "pkg-config" (i.e the system pkg-config, not the one built and installed by Buildroot in $(HOST_DIR)/usr/bin).

Quoted 4 lines

While I think that your patch should be applied (it's good to make optional dependencies explicit), I also think the pkg-config problem should be investigated and fixed.

I have just been testing 2015.08 and have immediately hit exactly the same issue. I have done some digging into qt5 and I think I see the issue. The problem is that qmake never looks at environment variables, only things passed on the command line. The patch below fixes the issue for me by explicitly passing PKG_CONFIG on the command line. What is unclear is why I am suddenly seeing the issue in 5.5.0 but not 5.4.1 as that bit of code seems the same in both versions.

I'll report the issue upstream and see what they say.

Should I spin this into a patch?

--- qt5base-5.5.0/config.tests/unix/compile.test.orig 2015-09-15
08:53:45.202320408 +0100
+++ qt5base-5.5.0/config.tests/unix/compile.test 2015-09-15
08:54:02.720770491 +0100
@@ -67,7 +67,7 @@ test -r Makefile && $MAKE distclean >/de
# Make sure output from possible previous tests is gone rm -f "$EXE" "${EXE}.exe"

-set -- "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG+=android_app" "CONFIG-=debug_and_release app_bundle lib_bundle" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
+set -- "$OUTDIR/bin/qmake" "PKG_CONFIG=$PKG_CONFIG" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG+=android_app" "CONFIG-=debug_and_release app_bundle lib_bundle" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
if [ "$VERBOSE" = "yes" ]; then

      OUTDIR=$OUTDIR "$@" && $MAKE && SUCCESS=yes

else

Regards
Will

Signature · 12 lines
------------------------------------------------------------------------
Will Wagner                                     will_wagner at carallon.com
Development Manager                      Office Tel: +44 (0)20 7471 9224
Carallon Ltd, Studio G20, Shepherds Building, Rockley Rd, London W14 0DA
------------------------------------------------------------------------

-- 
------------------------------------------------------------------------
Will Wagner                                     will_wagner at carallon.com
Development Manager                      Office Tel: +44 (0)20 7471 9224
Carallon Ltd, Studio G20, Shepherds Building, Rockley Rd, London W14 0DA
------------------------------------------------------------------------
#5 lore raw

PATCH 1/2 qt/qt5base: force gstreamer on configure

Dear Will Wagner,

Le 15/09/2015 10:37, Will Wagner a ?crit :

Quoted 29 lines · Thomas Petazzoni
Quoted 23 lines

Dear Julien Corjon,

Quoted 8 lines · Julien Corjon

Fixes:
http://autobuild.buildroot.net/results/0ee0f879e8563954c64b3940cdec39d2e6de937a/

---
  package/qt5/qt5base/qt5base.mk | 10 ++++++++++
  1 file changed, 10 insertions(+)

I'm sorry, but I don't think this is really the source of the problem. I did reproduce this build failure, and even if GStreamer is built before Qt5 (which is the case in the build failure you're linking in the commit log), Qt5 concludes that GStreamer is not available.

And this is because for some reason, Qt5 now seems to ignore the PKG_CONFIG environment variable that we pass to it. I've added some debugging messages to the packagesExist() function, and it uses just "pkg-config" (i.e the system pkg-config, not the one built and installed by Buildroot in $(HOST_DIR)/usr/bin).

Quoted 4 lines

While I think that your patch should be applied (it's good to make optional dependencies explicit), I also think the pkg-config problem should be investigated and fixed.

Quoted 7 lines

I have just been testing 2015.08 and have immediately hit exactly the same issue. I have done some digging into qt5 and I think I see the issue. The problem is that qmake never looks at environment variables, only things passed on the command line. The patch below fixes the issue for me by explicitly passing PKG_CONFIG on the command line. What is unclear is why I am suddenly seeing the issue in 5.5.0 but not 5.4.1 as that bit of code seems the same in both versions.

I also do not understand why this bug has shows up suddenly...

Quoted 2 lines

I'll report the issue upstream and see what they say.

I already report a bug on Qt bug-tracking system[1]. Feel free to reply to it with your investigation

Quoted 2 lines

Should I spin this into a patch?

Sure you should spin thin into a patch for Buildroot and for Qt mainline.

Regards,

Julien

[1] https://bugreports.qt.io/browse/QTBUG-48046

Quoted 30 lines

--- qt5base-5.5.0/config.tests/unix/compile.test.orig 2015-09-15
08:53:45.202320408 +0100
+++ qt5base-5.5.0/config.tests/unix/compile.test 2015-09-15
08:54:02.720770491 +0100

(quoted diff) +0 -1
@@ -67,7 +67,7 @@ test -r Makefile && $MAKE distclean >/de
  # Make sure output from possible previous tests is gone
  rm -f "$EXE" "${EXE}.exe"
 
-set -- "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC"

"CONFIG+=$QMAKE_CONFIG" "CONFIG+=android_app" "CONFIG-=debug_and_release app_bundle lib_bundle" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
+set -- "$OUTDIR/bin/qmake" "PKG_CONFIG=$PKG_CONFIG" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG+=android_app" "CONFIG-=debug_and_release app_bundle lib_bundle" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
if [ "$VERBOSE" = "yes" ]; then

      OUTDIR=$OUTDIR "$@" && $MAKE && SUCCESS=yes

else

Regards
Will

#6 lore raw

PATCH 1/2 qt/qt5base: force gstreamer on configure

In reply to Julien Corjon

Julien, All,

On 2015-08-06 12:06 +0200, Julien Corjon spake thusly:

Quoted 1 line

As Thomas said, this does not really fix that issue.

However, still following Thomas comment, I think this is a valid patch, and it should be applied with a tweaked commit log;

package/qt5base: add support for optional gstreamer

qt5base can optionally support gstreamer-0.10 or gstreamer-1.0. Upstreamer still considers gstreamer-0.10 to be preferred over 1.0.

Ensure that gstreamer, when enabled, is built before qt5base; tell qt5base to use the proper gstreamer variant, or none if gstreamer is not enabled.

Signed-off-by You

With that fixed, you can add my:

    Reviewed-by: "Yann E. MORIN" <[email protected]>

Regards,
Yann E. MORIN.

Quoted 33 lines
---
 package/qt5/qt5base/qt5base.mk | 10 ++++++++++
 1 file changed, 10 insertions(+)
package/qt5/qt5base/qt5base.mk +10 -0
index 753b069..f04545b 100644
@@ -152,6 +152,16 @@ QT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_LIBGLIB2),libglib2)
 QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_ICU),-icu,-no-icu)
 QT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_ICU),icu)
 
+ifeq ($(BR2_PACKAGE_GSTREAMER),y)
+QT5BASE_CONFIGURE_OPTS += -gstreamer 0.10
+QT5BASE_DEPENDENCIES   += gstreamer
+else ifeq ($(BR2_PACKAGE_GSTREAMER1),y)
+QT5BASE_CONFIGURE_OPTS += -gstreamer 1.0
+QT5BASE_DEPENDENCIES   += gstreamer1
+else
+QT5BASE_CONFIGURE_OPTS += -no-gstreamer
+endif
+
 QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_EXAMPLES),-make,-nomake) examples
 
 # Build the list of libraries to be installed on the target
Signature · 6 lines
2.1.0

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#7 lore raw

PATCH 1/2 qt/qt5base: force gstreamer on configure

Yann, Peter, All

Le 10/01/2016 17:19, Yann E. MORIN a ?crit :

Quoted 8 lines

Julien, All,

On 2015-08-06 12:06 +0200, Julien Corjon spake thusly:

Quoted 1 line

As Thomas said, this does not really fix that issue.

However, still following Thomas comment, I think this is a valid patch,

Patch was valid back then.

Quoted 4 lines

and it should be applied with a tweaked commit log;

package/qt5base: add support for optional gstreamer

Quoted 9 lines

qt5base can optionally support gstreamer-0.10 or gstreamer-1.0. Upstreamer still considers gstreamer-0.10 to be preferred over 1.0.

Ensure that gstreamer, when enabled, is built before qt5base; tell qt5base to use the proper gstreamer variant, or none if gstreamer is not enabled.

Signed-off-by You

Peter already patch gstreamer for qt5base and he have removed gstreamer0.1 support[1]. I'm not sure this was the good solution because gstreamer0.1 is still the default choise for Qt[2] but no buildroot user seems to complain about that.

Quoted 6 lines

With that fixed, you can add my:

     Reviewed-by: "Yann E. MORIN" <[email protected]>

Regards,
Yann E. MORIN.

Regards,
Julien Corjon

[1]
https://git.busybox.net/buildroot/commit/?id=da9f034d5d1df10ad6c3e249a9a488dc7ef1c42a
[2] https://wiki.qt.io/New_Features_in_Qt_5.5

#8 lore raw

PATCH 1/2 qt/qt5base: force gstreamer on configure

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Julien" == Julien CORJON <[email protected]> writes:

Hi,

Quoted 4 lines

Peter already patch gstreamer for qt5base and he have removed gstreamer0.1 support[1]. I'm not sure this was the good solution because gstreamer0.1 is still the default choise for Qt[2] but no buildroot user seems to complain about that.

As I explained in the commit message, the reason for disabling the gstreamer 0.10.x support was that it was broken in qt5multimedia. If this is (or gets in the future) fixed, then I have no problem adding it again.

With that said, we should use prefer gstreamer 1.x support over 0.10.x if both are enabled.

Signature · 2 lines
Venlig hilsen,
Peter Korsgaard 
#9 lore raw

PATCH 1/2 qt/qt5base: force gstreamer on configure

In reply to Julien Corjon

Julien, All,

On 2015-08-06 12:06 +0200, Julien Corjon spake thusly:

Quoted 1 line

Given the feedback in this thread, I'm marking this patch as rejected in Patchwork:
- we already have support for gstreamer-1.x
- gstreamer-0.10.x seems to be broken.

Thanks for spawning the discussion with your patch! :-)

Regards,
Yann E. MORIN.

Quoted 33 lines
---
 package/qt5/qt5base/qt5base.mk | 10 ++++++++++
 1 file changed, 10 insertions(+)
package/qt5/qt5base/qt5base.mk +10 -0
index 753b069..f04545b 100644
@@ -152,6 +152,16 @@ QT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_LIBGLIB2),libglib2)
 QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_ICU),-icu,-no-icu)
 QT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_ICU),icu)
 
+ifeq ($(BR2_PACKAGE_GSTREAMER),y)
+QT5BASE_CONFIGURE_OPTS += -gstreamer 0.10
+QT5BASE_DEPENDENCIES   += gstreamer
+else ifeq ($(BR2_PACKAGE_GSTREAMER1),y)
+QT5BASE_CONFIGURE_OPTS += -gstreamer 1.0
+QT5BASE_DEPENDENCIES   += gstreamer1
+else
+QT5BASE_CONFIGURE_OPTS += -no-gstreamer
+endif
+
 QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_EXAMPLES),-make,-nomake) examples
 
 # Build the list of libraries to be installed on the target
Signature · 6 lines
2.1.0

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'