On Tue, Apr 05, 2016 at 07:22:20AM +0300, Efraim Flashner wrote: > I try very hard to not build qt on my laptop, mostly because of the long > build time (7 hours on hydra [0]). Currently we download and use the big > download of qt[1] and frankly I'd rather not. Qt does also ship in smaller > bits[2], 32 if I counted correctly. I propose we package the submodules and > over time we go through the packages that use qt and switch out the > monolithic qt for just the parts that the program actually uses. It makes it > less daunting to build, should make the closures smaller, and means that if a > submodule fails to build on an architecture then they only lose that module, > not all of qt. > > [0] http://hydra.gnu.org/build/1114596 > [1] > https://download.qt.io/official_releases/qt/5.6/5.6.0/single/qt-everywhere-opensource-src-5.6.0.tar.xz > [2] https://download.qt.io/official_releases/qt/5.6/5.6.0/submodules/ >
Finally got around to building qtbase out, took me 6 hours total on my machine. So since hydra[1] says it takes 7:15 it's a bit shorter. I haven't had a chance yet to try out qmake on the other modules or to try to optimize the build yet. One of the things I did want to try was replacing python2 with python-wrapper and enabling parallel-builds. I opted for straight out copying qt-5's build rather than inheriting so it'll be easier to remove it if/when we're ready, and I updated the license based on the text shown during build-time. I've attached what I have so far if anyone else wants to take a look at it while I'm working on it. Also very worthy of note, qt-5.5.1 is listed at 288 MB, and qtbase-5.6.0 is all of 85 MB. efraim@debian-netbook:~$ du -sch /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/* 6.6M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/bin 560K /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/doc 25M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/examples 20M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/include 30M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/lib 2.5M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/mkspecs 2.6M /gnu/store/r9bpiyz2w5bkavnx3s1ffxpgc51wa9z5-qtbase-5.6.0/plugins 85M total [1] http://hydra.gnu.org/build/1202329 -- Efraim Flashner <efr...@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted
From 8d324a49e93b51daf2b756c7b749fd9be295824d Mon Sep 17 00:00:00 2001 From: Efraim Flashner <efr...@flashner.co.il> Date: Wed, 18 May 2016 15:15:28 +0300 Subject: [PATCH] gnu: Add qtbase. * gnu/packages/qt.scm (qtbase): New variable. --- gnu/packages/qt.scm | 142 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 140 insertions(+), 2 deletions(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 097ec06..bdd298f 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andr...@enge.fr> ;;; Copyright © 2015 Sou Bunnbu <iyzs...@gmail.com> ;;; Copyright © 2015 Ludovic Courtès <l...@gnu.org> -;;; Copyright © 2015 Efraim Flashner <efr...@flashner.co.il> +;;; Copyright © 2015, 2016 Efraim Flashner <efr...@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,7 +20,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages qt) - #:use-module ((guix licenses) #:select (bsd-3 gpl2 gpl3 lgpl2.1 lgpl2.1+ x11-style)) + #:use-module ((guix licenses) #:select (bsd-3 gpl2 gpl3 lgpl2.1 lgpl2.1+ lgpl3 x11-style)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build utils) @@ -201,6 +201,144 @@ developers using C++ or QML, a CSS & JavaScript like language.") ;; Qt 5: assembler error; see <http://hydra.gnu.org/build/112526>. (supported-systems (delete "mips64el-linux" %supported-systems)))) +(define-public qtbase + (package + (name "qtbase") + (version "5.6.0") + (source (origin + (method url-fetch) + (uri (string-append "https://download.qt.io/official_releases/qt/" + (version-major+minor version) "/" version + "/submodules/" name "-opensource-src-" + version ".tar.xz")) + (sha256 + (base32 + "0ynnvcs5idivzldsq5ciqg9myg82b3l3906l4vjv54lyamf8mykf")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Remove one of the two bundled harfbuzz copies in addition + ;; to passing "-system-harfbuzz". + (delete-file-recursively "src/3rdparty/harfbuzz-ng") + ;; Remove the bundled sqlite copy in addition to + ;; passing "-system-sqlite". + (delete-file-recursively "src/3rdparty/sqlite"))))) + (build-system gnu-build-system) + (propagated-inputs + `(("mesa" ,mesa))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("dbus" ,dbus) + ("cups" ,cups) + ("expat" ,expat) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("glib" ,glib) + ("harfbuzz" ,harfbuzz) + ("icu4c" ,icu4c) + ("libjpeg" ,libjpeg) + ("libmng" ,libmng) + ("libpci" ,pciutils) + ("libpng" ,libpng) + ("libx11" ,libx11) + ("libxcomposite" ,libxcomposite) + ("libxcursor" ,libxcursor) + ("libxfixes" ,libxfixes) + ("libxi" ,libxi) + ("libxinerama" ,libxinerama) + ("libxkbcommon" ,libxkbcommon) + ("libxml2" ,libxml2) + ("libxrandr" ,libxrandr) + ("libxrender" ,libxrender) + ("libxslt" ,libxslt) + ("libxtst" ,libxtst) + ("mtdev" ,mtdev) + ("mysql" ,mysql) + ("nss" ,nss) + ("openssl" ,openssl) + ("postgresql" ,postgresql) + ("pulseaudio" ,pulseaudio) + ("pcre" ,pcre) + ("sqlite" ,sqlite) + ("udev" ,eudev) + ("unixodbc" ,unixodbc) + ("xcb-util" ,xcb-util) + ("xcb-util-image" ,xcb-util-image) + ("xcb-util-keysyms" ,xcb-util-keysyms) + ("xcb-util-renderutil" ,xcb-util-renderutil) + ("xcb-util-wm" ,xcb-util-wm) + ("zlib" ,zlib))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ("gperf" ,gperf) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-2) + ("ruby" ,ruby) + ("which" ,(@ (gnu packages base) which)))) + (arguments + `(;; FIXME: Disabling parallel building is a quick hack to avoid the + ;; failure described in + ;; https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00837.html + ;; A more structural fix is needed. + #:parallel-build? #f + #:phases + (modify-phases %standard-phases + (add-after 'configure 'patch-bin-sh + (lambda _ + (substitute* '("config.status" + "configure" + "mkspecs/features/qt_functions.prf" + "qmake/library/qmakebuiltins.cpp") + (("/bin/sh") (which "sh"))) + #t)) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "configure" + (("/bin/pwd") (which "pwd"))) + (substitute* "src/corelib/global/global.pri" + (("/bin/ls") (which "ls"))) + ;; do not pass "--enable-fast-install", which makes the + ;; configure process fail + (zero? (system* + "./configure" + "-verbose" + "-prefix" out + "-opensource" + "-confirm-license" + ;; Most "-system-..." are automatic, but some use + ;; the bundled copy by default. + "-system-sqlite" + "-system-harfbuzz" + ;; explicitly link with openssl instead of dlopening it + "-openssl-linked" + ;; explicitly link with dbus instead of dlopening it + "-dbus-linked" + ;; drop special machine instructions not supported + ;; on all instances of the target + ,@(if (string-prefix? "x86_64" + (or (%current-target-system) + (%current-system))) + '() + '("-no-sse2")) + "-no-sse3" + "-no-ssse3" + "-no-sse4.1" + "-no-sse4.2" + "-no-avx" + "-no-avx2" + "-no-mips_dsp" + "-no-mips_dspr2")))))))) + (home-page "https://www.qt.io/") + (synopsis "Cross-platform GUI library") + (description "Qt is a cross-platform application and UI framework for +developers using C++ or QML, a CSS & JavaScript like language.") + (license (list lgpl2.1 lgpl3)) + ;; Qt 5: assembler error; see <http://hydra.gnu.org/build/112526>. + (supported-systems (delete "mips64el-linux" %supported-systems)))) + (define-public qt-4 (package (inherit qt) (version "4.8.7") -- 2.7.4
signature.asc
Description: PGP signature