All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2 1/2] qt5tools: new package
@ 2016-02-03 22:01 Peter Seiderer
  2016-02-03 22:44 ` Thomas Petazzoni
  0 siblings, 1 reply; 7+ messages in thread
From: Peter Seiderer @ 2016-02-03 22:01 UTC (permalink / raw)
  To: buildroot

- host programs: lconvert, lrelease and lupdate
- target programs: pixeltool, qtdiag, qtpath and qtplugininfo

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
Changes v1 -> v2:
  - add target programs, reword commit message
---
 package/qt5/Config.in              |   1 +
 package/qt5/qt5tools/Config.in     |  41 ++++++++++++++
 package/qt5/qt5tools/qt5tools.hash |   4 ++
 package/qt5/qt5tools/qt5tools.mk   | 106 +++++++++++++++++++++++++++++++++++++
 4 files changed, 152 insertions(+)
 create mode 100644 package/qt5/qt5tools/Config.in
 create mode 100644 package/qt5/qt5tools/qt5tools.hash
 create mode 100644 package/qt5/qt5tools/qt5tools.mk

diff --git a/package/qt5/Config.in b/package/qt5/Config.in
index ad6226e..1c42102 100644
--- a/package/qt5/Config.in
+++ b/package/qt5/Config.in
@@ -42,6 +42,7 @@ source "package/qt5/qt5quickcontrols/Config.in"
 source "package/qt5/qt5sensors/Config.in"
 source "package/qt5/qt5serialport/Config.in"
 source "package/qt5/qt5svg/Config.in"
+source "package/qt5/qt5tools/Config.in"
 source "package/qt5/qt5webchannel/Config.in"
 source "package/qt5/qt5websockets/Config.in"
 source "package/qt5/qt5x11extras/Config.in"
diff --git a/package/qt5/qt5tools/Config.in b/package/qt5/qt5tools/Config.in
new file mode 100644
index 0000000..432f095
--- /dev/null
+++ b/package/qt5/qt5tools/Config.in
@@ -0,0 +1,41 @@
+config BR2_PACKAGE_QT5TOOLS
+	bool "qt5tools"
+	help
+	  Qt is a cross-platform application and UI framework for
+	  developers using C++.
+
+	  This package corresponds to the qt5tools module.
+
+	  http://qt.io
+
+if BR2_PACKAGE_QT5TOOLS
+
+config BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS
+	bool "Linguist host tools (lconvert, lrelease, lupdate)"
+	help
+	  This option enables the linguist host tools
+	  lconvert, lrelease and lupdate.
+
+config BR2_PACKAGE_QT5TOOLS_PIXELTOOL
+	bool "pixeltool"
+	select BR2_PACKAGE_QT5BASE_PNG
+        select BR2_PACKAGE_LIBPNG
+	help
+	  Compile and install the pixeltool program.
+
+config BR2_PACKAGE_QT5TOOLS_QTDIAG
+	bool "qtdiag"
+	help
+	  Compile and install the qtdiag program.
+
+config BR2_PACKAGE_QT5TOOLS_QTPATHS
+	bool "qtpaths"
+	help
+	  Compile and install the qtpaths program.
+
+config BR2_PACKAGE_QT5TOOLS_QTPLUGININFO
+	bool "qtplugininfo"
+	help
+	  Compile and install the qtplugininfo program.
+
+endif
diff --git a/package/qt5/qt5tools/qt5tools.hash b/package/qt5/qt5tools/qt5tools.hash
new file mode 100644
index 0000000..427dfe7
--- /dev/null
+++ b/package/qt5/qt5tools/qt5tools.hash
@@ -0,0 +1,4 @@
+# Hashes from: http://download.qt.io/official_releases/qt/5.5/5.5.0/submodules/qttools-opensource-src-5.5.0.tar.xz.mirrorlist
+sha256 5b65147187fb7f4456c20ef263f1093709d728f737d6d871a9a5888132fac07d qttools-opensource-src-5.5.0.tar.xz
+sha1   be69ccb338bcc7b397a8b31d7ba0a45fe677390e                         qttools-opensource-src-5.5.0.tar.xz
+md5    2057ef2110b6a1aec260a69e2860a502                                 qttools-opensource-src-5.5.0.tar.xz
diff --git a/package/qt5/qt5tools/qt5tools.mk b/package/qt5/qt5tools/qt5tools.mk
new file mode 100644
index 0000000..a849f4c
--- /dev/null
+++ b/package/qt5/qt5tools/qt5tools.mk
@@ -0,0 +1,106 @@
+################################################################################
+#
+# qt5tools
+#
+################################################################################
+
+QT5TOOLS_VERSION = $(QT5_VERSION)
+QT5TOOLS_SITE = $(QT5_SITE)
+QT5TOOLS_SOURCE = qttools-opensource-src-$(QT5BASE_VERSION).tar.xz
+
+QT5TOOLS_DEPENDENCIES = qt5base
+QT5TOOLS_INSTALL_STAGING = YES
+
+# linguist tools compile conditionally on qtHaveModule(qmldevtools-private)
+ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
+QT5TOOLS_DEPENDENCIES += qt5declarative
+endif
+
+ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
+QT5TOOLS_LICENSE = LGPLv2.1 with exception or LGPLv3
+QT5TOOLS_LICENSE_FILES = LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3
+else
+QT5TOOLS_LICENSE = Commercial license
+QT5TOOLS_REDISTRIBUTE = NO
+endif
+
+define QT5TOOLS_CONFIGURE_CMDS
+	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
+endef
+
+define QT5TOOLS_BUILD_CMDS_ALL
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
+		sub-src-qmake_all
+endef
+
+ifeq ($(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS),y)
+define QT5TOOLS_BUILD_CMDS_LINGUIST_TOOLS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lconvert
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lrelease
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lupdate
+endef
+define QT5TOOLS_INSTALL_STAGING_CMDS_LINGUIST_TOOLS
+	cp -dpf $(@D)/bin/lconvert $(STAGING_DIR)/usr/bin
+	cp -dpf $(@D)/bin/lrelease $(STAGING_DIR)/usr/bin
+	cp -dpf $(@D)/bin/lupdate $(STAGING_DIR)/usr/bin
+endef
+endif
+
+ifeq ($(BR2_PACKAGE_QT5TOOLS_PIXELTOOL),y)
+QT5TOOLS_DEPENDENCIES += libpng
+define QT5TOOLS_BUILD_CMDS_PIXELTOOL
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/pixeltool
+endef
+define QT5TOOLS_INSTALL_TARGET_CMDS_PIXELTOOL
+	cp -dpf $(@D)/bin/pixeltool $(TARGET_DIR)/usr/bin
+endef
+endif
+
+ifeq ($(BR2_PACKAGE_QT5TOOLS_QTDIAG),y)
+define QT5TOOLS_BUILD_CMDS_QTDIAG
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/qtdiag
+endef
+define QT5TOOLS_INSTALL_TARGET_CMDS_QTDIAG
+	cp -dpf $(@D)/bin/qtdiag $(TARGET_DIR)/usr/bin
+endef
+endif
+
+ifeq ($(BR2_PACKAGE_QT5TOOLS_QTPATHS),y)
+define QT5TOOLS_BUILD_CMDS_QTPATHS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/qtpaths
+endef
+define QT5TOOLS_INSTALL_TARGET_CMDS_QTPATHS
+	cp -dpf $(@D)/bin/qtpaths $(TARGET_DIR)/usr/bin
+endef
+endif
+
+ifeq ($(BR2_PACKAGE_QT5TOOLS_QTPLUGININFO),y)
+define QT5TOOLS_BUILD_CMDS_QTPLUGININFO
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/qtplugininfo
+endef
+define QT5TOOLS_INSTALL_TARGET_CMDS_QTDIAG
+	cp -dpf $(@D)/bin/qtplugininfo $(TARGET_DIR)/usr/bin
+endef
+endif
+
+define QT5TOOLS_BUILD_CMDS
+	$(QT5TOOLS_BUILD_CMDS_ALL)
+	$(QT5TOOLS_BUILD_CMDS_LINGUIST_TOOLS)
+	$(QT5TOOLS_BUILD_CMDS_PIXELTOOL)
+	$(QT5TOOLS_BUILD_CMDS_QTDIAG)
+	$(QT5TOOLS_BUILD_CMDS_QTPATHS)
+	$(QT5TOOLS_BUILD_CMDS_QTPLUGININFO)
+endef
+
+define QT5TOOLS_INSTALL_STAGING_CMDS
+	$(QT5TOOLS_INSTALL_STAGING_CMDS_LINGUIST_TOOLS)
+endef
+
+define QT5TOOLS_INSTALL_TARGET_CMDS
+	$(QT5TOOLS_INSTALL_TARGET_CMDS_PIXELTOOL)
+	$(QT5TOOLS_INSTALL_TARGET_CMDS_QTDIAG)
+	$(QT5TOOLS_INSTALL_TARGET_CMDS_QTPATHS)
+	$(QT5TOOLS_INSTALL_TARGET_CMDS_QTPLUGININFO)
+endef
+
+$(eval $(generic-package))
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH v2 1/2] qt5tools: new package
  2016-02-03 22:01 [Buildroot] [PATCH v2 1/2] qt5tools: new package Peter Seiderer
@ 2016-02-03 22:44 ` Thomas Petazzoni
  2016-02-04 20:20   ` Peter Seiderer
  0 siblings, 1 reply; 7+ messages in thread
From: Thomas Petazzoni @ 2016-02-03 22:44 UTC (permalink / raw)
  To: buildroot

Dear Peter Seiderer,

On Wed,  3 Feb 2016 23:01:10 +0100, Peter Seiderer wrote:
> - host programs: lconvert, lrelease and lupdate

Ok, so you say they are host programs, i.e built to be executed on the
host. It is somewhat weird that they are built by a target package, but
since it's already the case with the qt5base package providing qmake
and other tools, I guess that's OK.

> diff --git a/package/qt5/qt5tools/Config.in b/package/qt5/qt5tools/Config.in
> new file mode 100644
> index 0000000..432f095
> --- /dev/null
> +++ b/package/qt5/qt5tools/Config.in
> @@ -0,0 +1,41 @@
> +config BR2_PACKAGE_QT5TOOLS
> +	bool "qt5tools"
> +	help
> +	  Qt is a cross-platform application and UI framework for
> +	  developers using C++.
> +
> +	  This package corresponds to the qt5tools module.
> +
> +	  http://qt.io
> +
> +if BR2_PACKAGE_QT5TOOLS
> +
> +config BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS
> +	bool "Linguist host tools (lconvert, lrelease, lupdate)"
> +	help
> +	  This option enables the linguist host tools
> +	  lconvert, lrelease and lupdate.
> +
> +config BR2_PACKAGE_QT5TOOLS_PIXELTOOL
> +	bool "pixeltool"
> +	select BR2_PACKAGE_QT5BASE_PNG
> +        select BR2_PACKAGE_LIBPNG

This line is not properly indented and is not needed, since
BR2_PACKAGE_QT5BASE_PNG already selects BR2_PACKAGE_LIBPNG.

It *may* be needed if pixeltool directly calls libpng functions, in
order to make this dependency clear. But isn't pixeltool only using
qt5base PNG functions ?

> diff --git a/package/qt5/qt5tools/qt5tools.mk b/package/qt5/qt5tools/qt5tools.mk
> new file mode 100644
> index 0000000..a849f4c
> --- /dev/null
> +++ b/package/qt5/qt5tools/qt5tools.mk
> @@ -0,0 +1,106 @@
> +################################################################################
> +#
> +# qt5tools
> +#
> +################################################################################
> +
> +QT5TOOLS_VERSION = $(QT5_VERSION)
> +QT5TOOLS_SITE = $(QT5_SITE)
> +QT5TOOLS_SOURCE = qttools-opensource-src-$(QT5BASE_VERSION).tar.xz
> +
> +QT5TOOLS_DEPENDENCIES = qt5base
> +QT5TOOLS_INSTALL_STAGING = YES
> +
> +# linguist tools compile conditionally on qtHaveModule(qmldevtools-private)
> +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
> +QT5TOOLS_DEPENDENCIES += qt5declarative
> +endif

linguist tools are built for the host according to what you're saying.
So how can they use a target package ?

> +define QT5TOOLS_BUILD_CMDS_ALL
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
> +		sub-src-qmake_all

The line break is not really needed here.

> +endef
> +
> +ifeq ($(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS),y)
> +define QT5TOOLS_BUILD_CMDS_LINGUIST_TOOLS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lconvert
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lrelease
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lupdate
> +endef
> +define QT5TOOLS_INSTALL_STAGING_CMDS_LINGUIST_TOOLS
> +	cp -dpf $(@D)/bin/lconvert $(STAGING_DIR)/usr/bin
> +	cp -dpf $(@D)/bin/lrelease $(STAGING_DIR)/usr/bin
> +	cp -dpf $(@D)/bin/lupdate $(STAGING_DIR)/usr/bin

So they are host tools, but you install them in $(STAGING_DIR) where we
install only target binaries ? This looks weird.

Also, the canonical way of installing binaries is:

	$(INSTALL) -D -m0755 $(@D)/bin/lconvert $(STAGING_DIR)/usr/bin/lconvert

> +endef
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT5TOOLS_PIXELTOOL),y)
> +QT5TOOLS_DEPENDENCIES += libpng

Really needed ?

> +define QT5TOOLS_BUILD_CMDS_PIXELTOOL
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/pixeltool
> +endef
> +define QT5TOOLS_INSTALL_TARGET_CMDS_PIXELTOOL
> +	cp -dpf $(@D)/bin/pixeltool $(TARGET_DIR)/usr/bin
> +endef
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT5TOOLS_QTDIAG),y)
> +define QT5TOOLS_BUILD_CMDS_QTDIAG
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/qtdiag
> +endef
> +define QT5TOOLS_INSTALL_TARGET_CMDS_QTDIAG
> +	cp -dpf $(@D)/bin/qtdiag $(TARGET_DIR)/usr/bin
> +endef
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT5TOOLS_QTPATHS),y)
> +define QT5TOOLS_BUILD_CMDS_QTPATHS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/qtpaths
> +endef
> +define QT5TOOLS_INSTALL_TARGET_CMDS_QTPATHS
> +	cp -dpf $(@D)/bin/qtpaths $(TARGET_DIR)/usr/bin
> +endef
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT5TOOLS_QTPLUGININFO),y)
> +define QT5TOOLS_BUILD_CMDS_QTPLUGININFO
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/qtplugininfo
> +endef
> +define QT5TOOLS_INSTALL_TARGET_CMDS_QTDIAG
> +	cp -dpf $(@D)/bin/qtplugininfo $(TARGET_DIR)/usr/bin
> +endef
> +endif

All this logic looks fairly repetitive. What about instead:

QT5TOOLS_TOOL_DIRS_$(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS) += \
	linguist/lconvert linguist/lrelease linguist/lupdate
QT5TOOLS_TOOL_DIRS_$(BR2_PACKAGE_QT5TOOLS_PIXELTOOL) += pixeltool
QT5TOOLS_TOOL_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTDIAG) += qtdiag
QT5TOOLS_TOOL_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTPATHS) += qtpaths
QT5TOOLS_TOOL_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTPLUGINFO) += qtpluginfo

and then:

define QT5TOOLS_BUILD_CMDS
	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
		sub-src-qmake_all
	$(foreach p,$(QT5TOOLS_TOOL_DIRS_y),\
		$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/$(p)$(sep))
endef

And ditto for the installation.

You might need to do a special case for the linguist tools, though.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH v2 1/2] qt5tools: new package
  2016-02-03 22:44 ` Thomas Petazzoni
@ 2016-02-04 20:20   ` Peter Seiderer
  2016-02-04 20:38     ` Thomas Petazzoni
  0 siblings, 1 reply; 7+ messages in thread
From: Peter Seiderer @ 2016-02-04 20:20 UTC (permalink / raw)
  To: buildroot

Hello Thomas,

On Wed, 3 Feb 2016 23:44:38 +0100, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote:

> Dear Peter Seiderer,
> 
> On Wed,  3 Feb 2016 23:01:10 +0100, Peter Seiderer wrote:
> > - host programs: lconvert, lrelease and lupdate
> 
> Ok, so you say they are host programs, i.e built to be executed on the
> host. It is somewhat weird that they are built by a target package, but
> since it's already the case with the qt5base package providing qmake
> and other tools, I guess that's OK.
> 

Not sure, but I think for a 'real' host-qt5tools package a host-qt5base
package would be needed?

> > diff --git a/package/qt5/qt5tools/Config.in b/package/qt5/qt5tools/Config.in
> > new file mode 100644
> > index 0000000..432f095
> > --- /dev/null
> > +++ b/package/qt5/qt5tools/Config.in
> > @@ -0,0 +1,41 @@
> > +config BR2_PACKAGE_QT5TOOLS
> > +	bool "qt5tools"
> > +	help
> > +	  Qt is a cross-platform application and UI framework for
> > +	  developers using C++.
> > +
> > +	  This package corresponds to the qt5tools module.
> > +
> > +	  http://qt.io
> > +
> > +if BR2_PACKAGE_QT5TOOLS
> > +
> > +config BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS
> > +	bool "Linguist host tools (lconvert, lrelease, lupdate)"
> > +	help
> > +	  This option enables the linguist host tools
> > +	  lconvert, lrelease and lupdate.
> > +
> > +config BR2_PACKAGE_QT5TOOLS_PIXELTOOL
> > +	bool "pixeltool"
> > +	select BR2_PACKAGE_QT5BASE_PNG
> > +        select BR2_PACKAGE_LIBPNG
> 
> This line is not properly indented and is not needed, since

Sorry for the indent mismatch (still missing a good tab/space
highlight config for vim...).

> BR2_PACKAGE_QT5BASE_PNG already selects BR2_PACKAGE_LIBPNG.

O.k., will drop the line...

> 
> It *may* be needed if pixeltool directly calls libpng functions, in
> order to make this dependency clear. But isn't pixeltool only using
> qt5base PNG functions ?

Pixeltools just saves images (hardcoded) as png files...

> 
> > diff --git a/package/qt5/qt5tools/qt5tools.mk b/package/qt5/qt5tools/qt5tools.mk
> > new file mode 100644
> > index 0000000..a849f4c
> > --- /dev/null
> > +++ b/package/qt5/qt5tools/qt5tools.mk
> > @@ -0,0 +1,106 @@
> > +################################################################################
> > +#
> > +# qt5tools
> > +#
> > +################################################################################
> > +
> > +QT5TOOLS_VERSION = $(QT5_VERSION)
> > +QT5TOOLS_SITE = $(QT5_SITE)
> > +QT5TOOLS_SOURCE = qttools-opensource-src-$(QT5BASE_VERSION).tar.xz
> > +
> > +QT5TOOLS_DEPENDENCIES = qt5base
> > +QT5TOOLS_INSTALL_STAGING = YES
> > +
> > +# linguist tools compile conditionally on qtHaveModule(qmldevtools-private)
> > +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
> > +QT5TOOLS_DEPENDENCIES += qt5declarative
> > +endif
> 
> linguist tools are built for the host according to what you're saying.
> So how can they use a target package ?

The condition qtHaveModule(qmldevtools-private) is only used to
decide if lupdate will support parsing qml files (via setting
QT_NO_QML define), no linking against target qt5 libs...

> 
> > +define QT5TOOLS_BUILD_CMDS_ALL
> > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
> > +		sub-src-qmake_all
> 
> The line break is not really needed here.

O.k, will fix it....

> 
> > +endef
> > +
> > +ifeq ($(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS),y)
> > +define QT5TOOLS_BUILD_CMDS_LINGUIST_TOOLS
> > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lconvert
> > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lrelease
> > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lupdate
> > +endef
> > +define QT5TOOLS_INSTALL_STAGING_CMDS_LINGUIST_TOOLS
> > +	cp -dpf $(@D)/bin/lconvert $(STAGING_DIR)/usr/bin
> > +	cp -dpf $(@D)/bin/lrelease $(STAGING_DIR)/usr/bin
> > +	cp -dpf $(@D)/bin/lupdate $(STAGING_DIR)/usr/bin
> 
> So they are host tools, but you install them in $(STAGING_DIR) where we
> install only target binaries ? This looks weird.

Did first try to install to $(HOST_DIR)/usr/bin but this breaks
my use case (from .pro file):

    updateqm.input = TRANSLATIONS
    updateqm.output = Languages/${QMAKE_FILE_BASE}.qm
    updateqm.variable_out = PRE_TARGETDEPS
    updateqm.commands = $$[QT_INSTALL_BINS]/lrelease -markuntranslated \"$$LITERAL_HASH\" -idbased ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT}
    updateqm.CONFIG += no_link
    QMAKE_EXTRA_COMPILERS += updateqm

which works with the prebuild qt5 packages for linux and windows, so
I decided to install to the staging dir, maybe changing the 
QT_INSTALL_BINS path is better?
> 
> Also, the canonical way of installing binaries is:
> 
> 	$(INSTALL) -D -m0755 $(@D)/bin/lconvert $(STAGING_DIR)/usr/bin/lconvert
> 

O.k, will fix...

> > +endef
> > +endif
> > +
> > +ifeq ($(BR2_PACKAGE_QT5TOOLS_PIXELTOOL),y)
> > +QT5TOOLS_DEPENDENCIES += libpng
> 
> Really needed ?

O.k., will drop...

> 
> > +define QT5TOOLS_BUILD_CMDS_PIXELTOOL
> > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/pixeltool
> > +endef
> > +define QT5TOOLS_INSTALL_TARGET_CMDS_PIXELTOOL
> > +	cp -dpf $(@D)/bin/pixeltool $(TARGET_DIR)/usr/bin
> > +endef
> > +endif
> > +
> > +ifeq ($(BR2_PACKAGE_QT5TOOLS_QTDIAG),y)
> > +define QT5TOOLS_BUILD_CMDS_QTDIAG
> > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/qtdiag
> > +endef
> > +define QT5TOOLS_INSTALL_TARGET_CMDS_QTDIAG
> > +	cp -dpf $(@D)/bin/qtdiag $(TARGET_DIR)/usr/bin
> > +endef
> > +endif
> > +
> > +ifeq ($(BR2_PACKAGE_QT5TOOLS_QTPATHS),y)
> > +define QT5TOOLS_BUILD_CMDS_QTPATHS
> > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/qtpaths
> > +endef
> > +define QT5TOOLS_INSTALL_TARGET_CMDS_QTPATHS
> > +	cp -dpf $(@D)/bin/qtpaths $(TARGET_DIR)/usr/bin
> > +endef
> > +endif
> > +
> > +ifeq ($(BR2_PACKAGE_QT5TOOLS_QTPLUGININFO),y)
> > +define QT5TOOLS_BUILD_CMDS_QTPLUGININFO
> > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/qtplugininfo
> > +endef
> > +define QT5TOOLS_INSTALL_TARGET_CMDS_QTDIAG
> > +	cp -dpf $(@D)/bin/qtplugininfo $(TARGET_DIR)/usr/bin
> > +endef
> > +endif
> 
> All this logic looks fairly repetitive. What about instead:
> 
> QT5TOOLS_TOOL_DIRS_$(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS) += \
> 	linguist/lconvert linguist/lrelease linguist/lupdate
> QT5TOOLS_TOOL_DIRS_$(BR2_PACKAGE_QT5TOOLS_PIXELTOOL) += pixeltool
> QT5TOOLS_TOOL_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTDIAG) += qtdiag
> QT5TOOLS_TOOL_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTPATHS) += qtpaths
> QT5TOOLS_TOOL_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTPLUGINFO) += qtpluginfo
> 
> and then:
> 
> define QT5TOOLS_BUILD_CMDS
> 	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
> 		sub-src-qmake_all
> 	$(foreach p,$(QT5TOOLS_TOOL_DIRS_y),\
> 		$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/$(p)$(sep))
> endef
> 
> And ditto for the installation.

O.k, looks much better, will do...
> 
> You might need to do a special case for the linguist tools, though.
> 

Thanks for review...

Regards, Peter


> Best regards,
> 
> Thomas

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH v2 1/2] qt5tools: new package
  2016-02-04 20:20   ` Peter Seiderer
@ 2016-02-04 20:38     ` Thomas Petazzoni
  2016-02-04 21:07       ` Peter Seiderer
  0 siblings, 1 reply; 7+ messages in thread
From: Thomas Petazzoni @ 2016-02-04 20:38 UTC (permalink / raw)
  To: buildroot

Hello Peter,

On Thu, 4 Feb 2016 21:20:39 +0100, Peter Seiderer wrote:

> > Ok, so you say they are host programs, i.e built to be executed on the
> > host. It is somewhat weird that they are built by a target package, but
> > since it's already the case with the qt5base package providing qmake
> > and other tools, I guess that's OK.
> 
> Not sure, but I think for a 'real' host-qt5tools package a host-qt5base
> package would be needed?

Yes, and we are not going to do that. If qt5tools by default already
builds those linguist tools for the host machine, then that's fine,
it's like qt5base that automatically builds qmake for the host, and the
Qt libraries for the target.

> > It *may* be needed if pixeltool directly calls libpng functions, in
> > order to make this dependency clear. But isn't pixeltool only using
> > qt5base PNG functions ?
> 
> Pixeltools just saves images (hardcoded) as png files...

This does not really answer the question. The question is really
whether pixeltools uses only the Qt5 PNG functions, or directly the
libpng functions.

> > > +# linguist tools compile conditionally on qtHaveModule(qmldevtools-private)
> > > +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
> > > +QT5TOOLS_DEPENDENCIES += qt5declarative
> > > +endif
> > 
> > linguist tools are built for the host according to what you're saying.
> > So how can they use a target package ?
> 
> The condition qtHaveModule(qmldevtools-private) is only used to
> decide if lupdate will support parsing qml files (via setting
> QT_NO_QML define), no linking against target qt5 libs...

OK. Can you indicate this as a comment above this condition?

> > > +ifeq ($(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS),y)
> > > +define QT5TOOLS_BUILD_CMDS_LINGUIST_TOOLS
> > > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lconvert
> > > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lrelease
> > > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lupdate
> > > +endef
> > > +define QT5TOOLS_INSTALL_STAGING_CMDS_LINGUIST_TOOLS
> > > +	cp -dpf $(@D)/bin/lconvert $(STAGING_DIR)/usr/bin
> > > +	cp -dpf $(@D)/bin/lrelease $(STAGING_DIR)/usr/bin
> > > +	cp -dpf $(@D)/bin/lupdate $(STAGING_DIR)/usr/bin
> > 
> > So they are host tools, but you install them in $(STAGING_DIR) where we
> > install only target binaries ? This looks weird.
> 
> Did first try to install to $(HOST_DIR)/usr/bin but this breaks
> my use case (from .pro file):
> 
>     updateqm.input = TRANSLATIONS
>     updateqm.output = Languages/${QMAKE_FILE_BASE}.qm
>     updateqm.variable_out = PRE_TARGETDEPS
>     updateqm.commands = $$[QT_INSTALL_BINS]/lrelease -markuntranslated \"$$LITERAL_HASH\" -idbased ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT}
>     updateqm.CONFIG += no_link
>     QMAKE_EXTRA_COMPILERS += updateqm
> 
> which works with the prebuild qt5 packages for linux and windows, so
> I decided to install to the staging dir, maybe changing the 
> QT_INSTALL_BINS path is better?

Having host binaries in $(STAGING_DIR) is really not good. So yes,
maybe QT_INSTALL_BINS should point to $(HOST_DIR)/usr/bin/.

Thanks a lot!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH v2 1/2] qt5tools: new package
  2016-02-04 20:38     ` Thomas Petazzoni
@ 2016-02-04 21:07       ` Peter Seiderer
  2016-02-04 21:13         ` Thomas Petazzoni
  0 siblings, 1 reply; 7+ messages in thread
From: Peter Seiderer @ 2016-02-04 21:07 UTC (permalink / raw)
  To: buildroot

Hello Thomas,

On Thu, 4 Feb 2016 21:38:23 +0100, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote:

> Hello Peter,
> 
> On Thu, 4 Feb 2016 21:20:39 +0100, Peter Seiderer wrote:
> 
> > > Ok, so you say they are host programs, i.e built to be executed on the
> > > host. It is somewhat weird that they are built by a target package, but
> > > since it's already the case with the qt5base package providing qmake
> > > and other tools, I guess that's OK.
> > 
> > Not sure, but I think for a 'real' host-qt5tools package a host-qt5base
> > package would be needed?
> 
> Yes, and we are not going to do that. If qt5tools by default already
> builds those linguist tools for the host machine, then that's fine,
> it's like qt5base that automatically builds qmake for the host, and the
> Qt libraries for the target.

O.k, thanks for clarification...

> 
> > > It *may* be needed if pixeltool directly calls libpng functions, in
> > > order to make this dependency clear. But isn't pixeltool only using
> > > qt5base PNG functions ?
> > 
> > Pixeltools just saves images (hardcoded) as png files...
> 
> This does not really answer the question. The question is really
> whether pixeltools uses only the Qt5 PNG functions, or directly the
> libpng functions.

Sorry for not being precise here, pixeltools uses only Qt5 PNG functions
(via QPixmap.save(name, "PNG"))...

> 
> > > > +# linguist tools compile conditionally on qtHaveModule(qmldevtools-private)
> > > > +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
> > > > +QT5TOOLS_DEPENDENCIES += qt5declarative
> > > > +endif
> > > 
> > > linguist tools are built for the host according to what you're saying.
> > > So how can they use a target package ?
> > 
> > The condition qtHaveModule(qmldevtools-private) is only used to
> > decide if lupdate will support parsing qml files (via setting
> > QT_NO_QML define), no linking against target qt5 libs...
> 
> OK. Can you indicate this as a comment above this condition?

O.k., will do...

> 
> > > > +ifeq ($(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS),y)
> > > > +define QT5TOOLS_BUILD_CMDS_LINGUIST_TOOLS
> > > > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lconvert
> > > > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lrelease
> > > > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist/lupdate
> > > > +endef
> > > > +define QT5TOOLS_INSTALL_STAGING_CMDS_LINGUIST_TOOLS
> > > > +	cp -dpf $(@D)/bin/lconvert $(STAGING_DIR)/usr/bin
> > > > +	cp -dpf $(@D)/bin/lrelease $(STAGING_DIR)/usr/bin
> > > > +	cp -dpf $(@D)/bin/lupdate $(STAGING_DIR)/usr/bin
> > > 
> > > So they are host tools, but you install them in $(STAGING_DIR) where we
> > > install only target binaries ? This looks weird.
> > 
> > Did first try to install to $(HOST_DIR)/usr/bin but this breaks
> > my use case (from .pro file):
> > 
> >     updateqm.input = TRANSLATIONS
> >     updateqm.output = Languages/${QMAKE_FILE_BASE}.qm
> >     updateqm.variable_out = PRE_TARGETDEPS
> >     updateqm.commands = $$[QT_INSTALL_BINS]/lrelease -markuntranslated \"$$LITERAL_HASH\" -idbased ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT}
> >     updateqm.CONFIG += no_link
> >     QMAKE_EXTRA_COMPILERS += updateqm
> > 
> > which works with the prebuild qt5 packages for linux and windows, so
> > I decided to install to the staging dir, maybe changing the 
> > QT_INSTALL_BINS path is better?
> 
> Having host binaries in $(STAGING_DIR) is really not good. So yes,
> maybe QT_INSTALL_BINS should point to $(HOST_DIR)/usr/bin/.

Will take a look and try to change QT_INSTALL_BINS, hope it breaks no
other usage...

Regards,
Peter

> 
> Thanks a lot!
> 
> Thomas

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH v2 1/2] qt5tools: new package
  2016-02-04 21:07       ` Peter Seiderer
@ 2016-02-04 21:13         ` Thomas Petazzoni
  2016-02-04 21:32           ` Peter Seiderer
  0 siblings, 1 reply; 7+ messages in thread
From: Thomas Petazzoni @ 2016-02-04 21:13 UTC (permalink / raw)
  To: buildroot

Hello,

On Thu, 4 Feb 2016 22:07:05 +0100, Peter Seiderer wrote:

> > This does not really answer the question. The question is really
> > whether pixeltools uses only the Qt5 PNG functions, or directly the
> > libpng functions.
> 
> Sorry for not being precise here, pixeltools uses only Qt5 PNG functions
> (via QPixmap.save(name, "PNG"))...

OK, then the dependency on libpng is indeed not needed.


> > Having host binaries in $(STAGING_DIR) is really not good. So yes,
> > maybe QT_INSTALL_BINS should point to $(HOST_DIR)/usr/bin/.
> 
> Will take a look and try to change QT_INSTALL_BINS, hope it breaks no
> other usage...

That's also what I'm a bit afraid of, but the only way to know is to
actually test.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH v2 1/2] qt5tools: new package
  2016-02-04 21:13         ` Thomas Petazzoni
@ 2016-02-04 21:32           ` Peter Seiderer
  0 siblings, 0 replies; 7+ messages in thread
From: Peter Seiderer @ 2016-02-04 21:32 UTC (permalink / raw)
  To: buildroot

Hello Thomas,

On Thu, 4 Feb 2016 22:13:33 +0100, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote:

> Hello,
> 
> On Thu, 4 Feb 2016 22:07:05 +0100, Peter Seiderer wrote:
> 
> > > This does not really answer the question. The question is really
> > > whether pixeltools uses only the Qt5 PNG functions, or directly the
> > > libpng functions.
> > 
> > Sorry for not being precise here, pixeltools uses only Qt5 PNG functions
> > (via QPixmap.save(name, "PNG"))...
> 
> OK, then the dependency on libpng is indeed not needed.
> 
> 
> > > Having host binaries in $(STAGING_DIR) is really not good. So yes,
> > > maybe QT_INSTALL_BINS should point to $(HOST_DIR)/usr/bin/.
> > 
> > Will take a look and try to change QT_INSTALL_BINS, hope it breaks no
> > other usage...
> 
> That's also what I'm a bit afraid of, but the only way to know is to
> actually test.

Found a better way, simple use QT_HOST_BINS instead of QT_INSTALL_BINS
in my example...will send an updated patch soon...

Regards,
Peter

> 
> Best regards,
> 
> Thomas

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-02-04 21:32 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-03 22:01 [Buildroot] [PATCH v2 1/2] qt5tools: new package Peter Seiderer
2016-02-03 22:44 ` Thomas Petazzoni
2016-02-04 20:20   ` Peter Seiderer
2016-02-04 20:38     ` Thomas Petazzoni
2016-02-04 21:07       ` Peter Seiderer
2016-02-04 21:13         ` Thomas Petazzoni
2016-02-04 21:32           ` Peter Seiderer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.