gnu: qtbase: Specify configure flags via the #:configure-flags argument.

* gnu/packages/qt.scm (qtbase): Delete trailing #t.
[phases]{configure}: Print build directory and configure flags.
Move configure flags to...
[#:configure-flags]: ... this new argument.
This commit is contained in:
Maxim Cournoyer 2021-06-11 23:03:34 -04:00
parent 206193fec9
commit 3245d72bcd
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -303,25 +303,24 @@ (define-public qtbase-5
(name "qtbase")
(version "5.15.2")
(source (origin
(method url-fetch)
(uri (qt5-urls name version))
(sha256
(base32
"1y70libf2x52lpbqvhz10lpk7nyl1ajjwzjxly9pjdpfj4jsv7wh"))
;; Use TZDIR to avoid depending on package "tzdata".
(patches (search-patches "qtbase-use-TZDIR.patch"
"qtbase-moc-ignore-gcc-macro.patch"
"qtbase-absolute-runpath.patch"))
(modules '((guix build utils)))
(snippet
(method url-fetch)
(uri (qt5-urls name version))
(sha256
(base32
"1y70libf2x52lpbqvhz10lpk7nyl1ajjwzjxly9pjdpfj4jsv7wh"))
;; Use TZDIR to avoid depending on package "tzdata".
(patches (search-patches "qtbase-use-TZDIR.patch"
"qtbase-moc-ignore-gcc-macro.patch"
"qtbase-absolute-runpath.patch"))
(modules '((guix build utils)))
(snippet
;; corelib uses bundled harfbuzz, md4, md5, sha3
'(begin
(with-directory-excursion "src/3rdparty"
(for-each delete-file-recursively
(list "double-conversion" "freetype" "harfbuzz-ng"
"libpng" "libjpeg" "pcre2" "sqlite" "xcb"
"zlib"))
#t)))))
'(begin
(with-directory-excursion "src/3rdparty"
(for-each delete-file-recursively
(list "double-conversion" "freetype" "harfbuzz-ng"
"libpng" "libjpeg" "pcre2" "sqlite" "xcb"
"zlib")))))))
(build-system gnu-build-system)
(outputs '("out" "debug"))
(propagated-inputs
@ -383,7 +382,56 @@ (define-public qtbase-5
("vulkan-headers" ,vulkan-headers)
("ruby" ,ruby)))
(arguments
`(#:phases
`(#:configure-flags
(let ((out (assoc-ref %outputs "out")))
(list "-verbose"
"-prefix" out
"-docdir" (string-append out "/share/doc/qt5")
"-headerdir" (string-append out "/include/qt5")
"-archdatadir" (string-append out "/lib/qt5")
"-datadir" (string-append out "/share/qt5")
"-examplesdir" (string-append
out "/share/doc/qt5/examples")
"-opensource"
"-confirm-license"
;; Later stripped into the :debug output.
"-force-debug-info"
;; These features require higher versions of Linux than the
;; minimum version of the glibc. See
;; src/corelib/global/minimum-linux_p.h. By disabling these
;; features Qt5 applications can be used on the oldest
;; kernels that the glibc supports, including the RHEL6
;; (2.6.32) and RHEL7 (3.10) kernels.
"-no-feature-getentropy" ; requires Linux 3.17
"-no-feature-renameat2" ; requires Linux 3.16
;; Do not build examples; if desired, these could go
;; into a separate output, but for the time being, we
;; prefer to save the space and build time.
"-no-compile-examples"
;; Most "-system-..." are automatic, but some use
;; the bundled copy by default.
"-system-sqlite"
"-system-harfbuzz"
"-system-pcre"
;; explicitly link with openssl instead of dlopening it
"-openssl-linked"
;; explicitly link with dbus instead of dlopening it
"-dbus-linked"
;; don't use the precompiled headers
"-no-pch"
;; drop special machine instructions that do not have
;; runtime detection
,@(if (string-prefix? "x86_64"
(or (%current-target-system)
(%current-system)))
'()
'("-no-sse2"))
"-no-mips_dsp"
"-no-mips_dspr2"))
#:phases
(modify-phases %standard-phases
(add-after 'configure 'patch-bin-sh
(lambda _
@ -391,18 +439,18 @@ (define-public qtbase-5
"configure"
"mkspecs/features/qt_functions.prf"
"qmake/library/qmakebuiltins.cpp")
(("/bin/sh") (which "sh")))
#t))
(("/bin/sh") (which "sh")))))
(add-after 'configure 'patch-xdg-open
(lambda _
(substitute* '("src/platformsupport/services/genericunix/qgenericunixservices.cpp")
(("^.*const char \\*browsers.*$" all)
(string-append "*browser = QStringLiteral(\""
(which "xdg-open")
"\"); return true; \n" all)))
#t))
(("^.*const char \\*browsers.*$" all)
(string-append "*browser = QStringLiteral(\""
(which "xdg-open")
"\"); return true; \n" all)))))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
;; Overridden to not pass "--enable-fast-install", which makes the
;; configure process fail.
(lambda* (#:key outputs configure-flags #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* "configure"
(("/bin/pwd") (which "pwd")))
@ -415,57 +463,9 @@ (define-public qtbase-5
;; components can be installed in different places.
(substitute* (find-files "." ".*\\.cmake")
(("NO_DEFAULT_PATH") ""))
;; do not pass "--enable-fast-install", which makes the
;; configure process fail
(invoke
"./configure"
"-verbose"
"-prefix" out
"-docdir" (string-append out "/share/doc/qt5")
"-headerdir" (string-append out "/include/qt5")
"-archdatadir" (string-append out "/lib/qt5")
"-datadir" (string-append out "/share/qt5")
"-examplesdir" (string-append
out "/share/doc/qt5/examples")
"-opensource"
"-confirm-license"
;; Later stripped into the :debug output.
"-force-debug-info"
;; These features require higher versions of Linux than the
;; minimum version of the glibc. See
;; src/corelib/global/minimum-linux_p.h. By disabling these
;; features Qt5 applications can be used on the oldest
;; kernels that the glibc supports, including the RHEL6
;; (2.6.32) and RHEL7 (3.10) kernels.
"-no-feature-getentropy" ; requires Linux 3.17
"-no-feature-renameat2" ; requires Linux 3.16
;; Do not build examples; if desired, these could go
;; into a separate output, but for the time being, we
;; prefer to save the space and build time.
"-no-compile-examples"
;; Most "-system-..." are automatic, but some use
;; the bundled copy by default.
"-system-sqlite"
"-system-harfbuzz"
"-system-pcre"
;; explicitly link with openssl instead of dlopening it
"-openssl-linked"
;; explicitly link with dbus instead of dlopening it
"-dbus-linked"
;; don't use the precompiled headers
"-no-pch"
;; drop special machine instructions that do not have
;; runtime detection
,@(if (string-prefix? "x86_64"
(or (%current-target-system)
(%current-system)))
'()
'("-no-sse2"))
"-no-mips_dsp"
"-no-mips_dspr2"))))
(format #t "build directory: ~s~%" (getcwd))
(format #t "configure flags: ~s~%" configure-flags)
(apply invoke "./configure" configure-flags))))
(add-after 'install 'patch-mkspecs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@ -497,8 +497,7 @@ (define-public qtbase-5
'("device_config.prf" "moc.prf" "qt_build_config.prf"
"qt_config.prf" "winrt/package_manifest.prf"))
(("\\$\\$\\[QT_HOST_DATA/get\\]") archdata)
(("\\$\\$\\[QT_HOST_DATA/src\\]") archdata))
#t)))
(("\\$\\$\\[QT_HOST_DATA/src\\]") archdata)))))
(add-after 'patch-mkspecs 'patch-prl-files
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@ -507,8 +506,7 @@ (define-public qtbase-5
;; on context. See <https://bugs.gnu.org/38405>
(substitute* (find-files (string-append out "/lib") "\\.prl$")
(("\\$\\$\\[QT_INSTALL_LIBS\\]")
(string-append out "/lib")))
#t)))
(string-append out "/lib"))))))
(add-after 'unpack 'patch-paths
;; Use the absolute paths for dynamically loaded libs, otherwise
;; the lib will be searched in LD_LIBRARY_PATH which typically is
@ -520,7 +518,7 @@ (define-public qtbase-5
(substitute* '("src/network/kernel/qdnslookup_unix.cpp"
"src/network/kernel/qhostinfo_unix.cpp")
(("^\\s*(lib.setFileName\\(QLatin1String\\(\")(resolv\"\\)\\);)" _ a b)
(string-append a glibc "/lib/lib" b))))
(string-append a glibc "/lib/lib" b))))
;; libGL
(substitute* "src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp"
(("^\\s*(QLibrary lib\\(QLatin1String\\(\")(GL\"\\)\\);)" _ a b)
@ -530,8 +528,7 @@ (define-public qtbase-5
(("^\\s*(QLibrary xcursorLib\\(QLatin1String\\(\")(Xcursor\"\\), 1\\);)" _ a b)
(string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))
(("^\\s*(xcursorLib.setFileName\\(QLatin1String\\(\")(Xcursor\"\\)\\);)" _ a b)
(string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b)))
#t)))))
(string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))))))))
(native-search-paths
(list (search-path-specification
(variable "QMAKEPATH")