gnu: qtbase: Add variant that fixes file name handling in CMake macros.

* gnu/packages/patches/qtbase-QTBUG-81715.patch: New file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/qt.scm (qtbase-patched): New public variable.

Signed-off-by: Marius Bakke <mbakke@fastmail.com>
This commit is contained in:
John Soo 2020-02-21 21:13:47 -08:00 committed by Marius Bakke
parent dbf15d86e9
commit e2546bb472
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
3 changed files with 54 additions and 0 deletions

View File

@ -1355,6 +1355,7 @@ dist_patch_DATA = \
%D%/packages/patches/qrcodegen-cpp-make-install.patch \
%D%/packages/patches/qt4-ldflags.patch \
%D%/packages/patches/qtbase-use-TZDIR.patch \
%D%/packages/patches/qtbase-QTBUG-81715.patch \
%D%/packages/patches/qtscript-disable-tests.patch \
%D%/packages/patches/quagga-reproducible-build.patch \
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \

View File

@ -0,0 +1,40 @@
From 8a3fde00bf53d99e9e4853e8ab97b0e1bcf74915 Mon Sep 17 00:00:00 2001
From: Joerg Bornemann <joerg.bornemann@qt.io>
Date: Wed, 29 Jan 2020 11:06:35 +0100
Subject: [PATCH] Fix qt5_make_output_file macro for paths containing dots
Commit 89bd5a7e broke CMake projects that use dots in their build
paths, because the used regular expression matches the directory part
of the path as well.
The regex wants to achieve the same as get_filename_component(...
NAME_WLE) which is available since CMake 3.14. Re-implement the
NAME_WLE functionality for older CMake versions by using multiple
get_filename_component calls.
Fixes: QTBUG-81715
Task-number: QTBUG-80295
Change-Id: I2ef053300948f6e1b2c0c5eafac35105f193d4e6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
---
diff --git a/src/corelib/Qt5CoreMacros.cmake b/src/corelib/Qt5CoreMacros.cmake
index 7735e51..b3da640 100644
--- a/src/corelib/Qt5CoreMacros.cmake
+++ b/src/corelib/Qt5CoreMacros.cmake
@@ -59,7 +59,14 @@
set(_outfile "${CMAKE_CURRENT_BINARY_DIR}/${rel}")
string(REPLACE ".." "__" _outfile ${_outfile})
get_filename_component(outpath ${_outfile} PATH)
- string(REGEX REPLACE "\\.[^.]*$" "" _outfile ${_outfile})
+ if(CMAKE_VERSION VERSION_LESS "3.14")
+ get_filename_component(_outfile_ext ${_outfile} EXT)
+ get_filename_component(_outfile_ext ${_outfile_ext} NAME_WE)
+ get_filename_component(_outfile ${_outfile} NAME_WE)
+ string(APPEND _outfile ${_outfile_ext})
+ else()
+ get_filename_component(_outfile ${_outfile} NAME_WLE)
+ endif()
file(MAKE_DIRECTORY ${outpath})
set(${outfile} ${outpath}/${prefix}${_outfile}.${ext})
endmacro()

View File

@ -598,6 +598,19 @@ developers using C++ or QML, a CSS & JavaScript like language.")
developers using C++ or QML, a CSS & JavaScript like language.")
(license (list license:lgpl2.1 license:lgpl3))))
;; This variant fixes a problem with the CMake macros shipped by qtbase. See
;; discussion at <https://lists.gnu.org/archive/html/guix-devel/2020-02/msg00308.html>.
(define-public qtbase-patched
(let ((src (package-source qtbase)))
(hidden-package
(package
(inherit qtbase)
(source
(origin
(inherit src)
(patches
(append (search-patches "qtbase-QTBUG-81715.patch")
(origin-patches src)))))))))
;; qt used to refer to the monolithic Qt 5.x package
(define-deprecated qt qtbase)