From patchwork Tue May 5 11:00:41 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Genoud X-Patchwork-Id: 468066 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ozlabs.org (Postfix) with ESMTP id 5A30A140134 for ; Tue, 5 May 2015 21:00:59 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=gWQe1U4T; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 106C032A9E; Tue, 5 May 2015 11:00:58 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id r1V0118frj3W; Tue, 5 May 2015 11:00:54 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id D86D72718E; Tue, 5 May 2015 11:00:53 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id B952D1C268D for ; Tue, 5 May 2015 11:00:52 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id B59E22718E for ; Tue, 5 May 2015 11:00:52 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qW-cIbmMCBW0 for ; Tue, 5 May 2015 11:00:51 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-la0-f45.google.com (mail-la0-f45.google.com [209.85.215.45]) by silver.osuosl.org (Postfix) with ESMTPS id ED04D22FDB for ; Tue, 5 May 2015 11:00:50 +0000 (UTC) Received: by layy10 with SMTP id y10so124355857lay.0 for ; Tue, 05 May 2015 04:00:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=urSuup8yyIK4AxzHO7Imn4C/HSI+OdIrUx707+IsUac=; b=gWQe1U4TTZ82syd66haxSPPXqecz/hU/HJp7l4EYSYE0cYzfNttl6j587N/QBCvkN8 BDxctfaUnxDpH1Pv31UnBuseVbbGYchMuCgOVuEPnKKBVjFqPgWwHyVYjGlDw1r3F84U 8ON+iz+oDjV3MDiMgQS39az0wsWq8OvRpAX/xk2IK1P3QykVx78lYKzUmLBh2tYxDKeF YylT9rL/xnAtYTnb+AkNUAPAET30M8kzGkK2GoVIbL+Mk8iqw2mJG6KbdCD32fzIADTh DUmLuZyiH2gjTA2K7v+jbKctZPgdPr1R8QzUX3ns4SAtfyNTF3Hhf19Y84k978ldpdqw 6NFA== X-Received: by 10.112.211.134 with SMTP id nc6mr23140343lbc.52.1430823648985; Tue, 05 May 2015 04:00:48 -0700 (PDT) Received: from [192.168.2.41] ([46.227.18.67]) by mx.google.com with ESMTPSA id ml10sm3976344lbc.29.2015.05.05.04.00.48 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 May 2015 04:00:48 -0700 (PDT) Message-ID: <5548A2D9.8020900@gmail.com> Date: Tue, 05 May 2015 13:00:41 +0200 From: Richard Genoud User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.6.0 MIME-Version: 1.0 To: Thomas Petazzoni References: <20150502063016.3950D100FB0@stock.ovh.net> <20150503105009.2b42c375@free-electrons.com> <87h9rtucot.fsf@dell.be.48ers.dk> <878ud4qwl8.fsf@dell.be.48ers.dk> <20150504233058.2e5e1a59@free-electrons.com> In-Reply-To: <20150504233058.2e5e1a59@free-electrons.com> Cc: buildroot@uclibc.org Subject: Re: [Buildroot] Analysis of build failures X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" On 04/05/2015 23:30, Thomas Petazzoni wrote: > Dear Richard Genoud, > > On Mon, 4 May 2015 16:57:59 +0200, Richard Genoud wrote: > >>> > We currently only allow BR2_PACKAGE_QT_QT_COORD_TYPE_DOUBLE for soft >>> > float toolchains, but perhaps it needs to also be disallowed for mips64? >>> > Richard, care to take a look? >>> >>> QT_COORD_TYPE_DOUBLE also causes issues with python-pyqt because of >>> qreal* -> float* conversion. Could you take a look? >>> >>> http://autobuild.buildroot.net/results/891/891dc6ad46039740867a0b436281fc489cfb2772/build-end.log >> >> yes, no problem. > > And I also believe > http://autobuild.buildroot.org/results/3a7/3a70305be4a78af9404b0bd027dbcdd011ca01b3/build-end.log > is caused by BR2_PACKAGE_QT_QT_COORD_TYPE_DOUBLE: > > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QPen::setWidthF(float)' > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QTransform::translate(float, float)' > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QMatrix::setMatrix(float, float, float, float, float, float)' > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QTransform::rotate(float, Qt::Axis)' > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QColor::setRgbF(float, float, float, float)' > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QPen::setDashOffset(float)' > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QColor::setAlphaF(float)' > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QPen::setMiterLimit(float)' > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QTransform::QTransform(float, float, float, float, float, float)' > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QColor::setCmykF(float, float, float, float, float)' > ../../qt4/src/.libs/libpoppler-qt4.so: undefined reference to `QPen::setDashPattern(QVector const&)' > > The libpoppler code is expecting "float" arguments for all these > functions, but they are now taking "double" instead. > > Seems like using a double type is breaking a lot of assumptions of > existing applications and libraries. Do we really want to support this > option? > > I would personally suggest to revert the patch for now in 2015.05, and > take the time to make sure it is properly tested with all the Qt-based > libraries and applications. > > Richard, what do you think? Ok, I've found the right Config.in depends to set to BR2_PACKAGE_QT_QT_COORD_TYPE_DOUBLE. It shouldn't break in any arch now. I also corrected the breakage with python-pyqt. BUT, there's still some packages (at least poppler and pinentry (I started to compile more packages, but my internet liaison at work stalls quite often)) that are breaking when BR2_PACKAGE_QT_QT_COORD_TYPE_DOUBLE is set. The reason is that those packages are not using qmake, so the -DQT_COORD_TYPE=double doesn't appear in their CFLAGS/CXXFLAGS. So, for all packages that use Qt but not qmake, the CFLAGS/CXXFLAGS have to be appended with -DQT_COORD_TYPE=double That said, this option was originally created for QWT (http://qwt.sourceforge.net/ ): The problem was that QWT uses qreals to draw its curves/plots/... and when you want to have dates(QwtDate) on an axe, the dates are converted to qreal, and if qreal is float, the precision is not enough (not even by a day). So, forcing qreal to float seems a good solution. Given the fact that 2015.05 is close, and that there's quite some packages to test with this option (and that it's not a huge feature-killer), I agree with Thomas for reverting it. For reference, I'm pasting the patch I've come with to prevent breaking any architecture. From 66963b129eed082cdd5948c884ddfa4d5d8d4480 Mon Sep 17 00:00:00 2001 From: Richard Genoud Date: Mon, 4 May 2015 16:29:51 +0200 Subject: [PATCH] qt: correct QT_COORD_TYPE_DOUBLE selection logic We have to mimic exactly the #define logic of QT_COORD_TYPE in Qt/src/corelib/global/qglobal.h And if qreal is forced to double, BR2_PACKAGE_PYTHON_PYQT_ARCH_USES_QREAL_FLOAT must obviously not be set. Reported-by: Peter Korsgaard Signed-off-by: Richard Genoud --- package/python-pyqt/Config.in | 1 + package/qt/Config.in | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package/python-pyqt/Config.in b/package/python-pyqt/Config.in index a50cb74a43d0..3d7bfd859e32 100644 --- a/package/python-pyqt/Config.in +++ b/package/python-pyqt/Config.in @@ -18,6 +18,7 @@ if BR2_PACKAGE_PYTHON_PYQT config BR2_PACKAGE_PYTHON_PYQT_ARCH_USES_QREAL_FLOAT bool + depends on !BR2_PACKAGE_QT_QT_COORD_TYPE_DOUBLE default y if BR2_arm || BR2_armeb default y if BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb default y if (BR2_mipsel || BR2_mips) && BR2_PACKAGE_QT_EMBEDDED diff --git a/package/qt/Config.in b/package/qt/Config.in index 9568b7010cff..30028096c059 100644 --- a/package/qt/Config.in +++ b/package/qt/Config.in @@ -121,7 +121,10 @@ config BR2_PACKAGE_QT_CONFIG_FILE file, which Buildroot will give to Qt at compile time. config BR2_PACKAGE_QT_QT_COORD_TYPE_DOUBLE - depends on BR2_SOFT_FLOAT + depends on (BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb) || \ + (BR2_SOFT_FLOAT && \ + (BR2_arm || BR2_armeb || \ + (BR2_PACKAGE_QT_EMBEDDED && (BR2_mipsel || BR2_mips)))) bool "QT_COORD_TYPE to double" help Set QT_COORD_TYPE to double. On ARM-based platforms, qreal