* [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.