مهدي شينون (Mehdi Chinoune) cf190e6060 qt6: update to 6.10.0 - part1
2025-10-11 15:38:00 +01:00

238 lines
9.5 KiB
Bash

# Contributor: Mehdi Chinoune <mehdi.chinoune@hotmail.com>
_realname=qt6-base
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
"${MINGW_PACKAGE_PREFIX}-${_realname}-debug")
_qtver=6.10.0
pkgver=${_qtver/-/}
pkgrel=1
pkgdesc="A cross-platform application and UI framework (mingw-w64)"
arch=(any)
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url='https://www.qt.io'
msys2_repository_url="https://code.qt.io/cgit/qt/qtbase.git"
msys2_references=(
'archlinux: qt6-base'
"cpe: cpe:/a:qt:qt"
)
license=('spdx:LGPL-3.0-only WITH Qt-GPL-exception-1.0 AND AFL-2.1 AND Apache-2.0 AND BSL-1.0 AND CC0-1.0 AND BSD-3-Clause AND CC-BY-4.0 AND GFDL-1.3-no-invariants-only AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND custom')
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-pkgconf"
#"${MINGW_PACKAGE_PREFIX}-cppwinrt" breaks building qt6-multimedia ffmpeg plugin
# qtmultimedia-everywhere-src-6.10.0/src/plugins/multimedia/ffmpeg/qffmpegwindowcapture_uwp.cpp:35:10: fatal error: 'windows.graphics.directx.direct3d11.interop.h' file not found
# 35 | #include <windows.graphics.directx.direct3d11.interop.h>
# | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 1 error generated.
"${MINGW_PACKAGE_PREFIX}-dbus"
"${MINGW_PACKAGE_PREFIX}-double-conversion"
"${MINGW_PACKAGE_PREFIX}-freetype"
"${MINGW_PACKAGE_PREFIX}-glib2"
"${MINGW_PACKAGE_PREFIX}-harfbuzz"
"${MINGW_PACKAGE_PREFIX}-icu"
"${MINGW_PACKAGE_PREFIX}-libb2"
"${MINGW_PACKAGE_PREFIX}-libjpeg-turbo"
"${MINGW_PACKAGE_PREFIX}-libpng"
"${MINGW_PACKAGE_PREFIX}-md4c"
"${MINGW_PACKAGE_PREFIX}-openssl"
"${MINGW_PACKAGE_PREFIX}-pcre2"
"${MINGW_PACKAGE_PREFIX}-sqlite3"
"${MINGW_PACKAGE_PREFIX}-zlib"
"${MINGW_PACKAGE_PREFIX}-zstd"
"${MINGW_PACKAGE_PREFIX}-xmlstarlet"
"${MINGW_PACKAGE_PREFIX}-vulkan-loader"
"${MINGW_PACKAGE_PREFIX}-vulkan-headers"
"${MINGW_PACKAGE_PREFIX}-firebird"
"${MINGW_PACKAGE_PREFIX}-libmariadbclient"
"${MINGW_PACKAGE_PREFIX}-postgresql"
"rsync")
_pkgfn="${_realname/6-/}-everywhere-src-${_qtver}"
source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfn}.tar.xz"
001-appending-qt6-to-remove-qt5-conflict.patch
002-fix-qtdocs-helpers-cmake.patch
003-adjust-qmake-conf-mingw.patch
004-qt-6.2.0-win32-g-Add-QMAKE_EXTENSION_IMPORTLIB-defaulting-to-.patch
005-qt-6.7.0-opengl-header.patch
006-qt-6.2.0-dont-add-resource-files-to-qmake-libs.patch
008-freetype-fonts-fallback-dir.patch
009-qfileinfo-undefine-mingw-stat.patch
010-export-some-constexpr-variables.patch
011-qt6-windeployqt-fixes.patch)
sha256sums=('ead4623bcb54a32257c5b3e3a5aec6d16ec96f4cda58d2e003f5a0c16f72046d'
'c9f61d90ba7bce89f935c3e8ea90c448a641fd206666ef2d1542f61a3a655fc9'
'0dac4b7c07ed52367f55cb54df5aee6966601edc579861e2504701f04c509b9b'
'68156b8b7717a0ce19c4b991942469171bfa048cd5c90765115a546e65669a1d'
'ed5b61bcb367bbda459bec903d796ea45604278f577a988d602ade07ec6bf363'
'a2afc74d181864409dc96eca368b647c0f79e25751db88e3263f2d1101edf8e4'
'4085a10b290b8e3d930de535cbad2ba3e643432cba433aa2b28fe664f86d38a3'
'e2fbd970a20773f0d914f6ffc96aafc8212192227577ec007a460e35398038bf'
'f4261d43a142a24e5fa3b23e25813754839db84078cc8c6dc611139bf531e64a'
'23656a7839d7dcb763d022722d723493c847914b0639bab861ddb05d823af5b7'
'1d605fa3c9a9820ddc2858db84376bca0cf24f91a4c1ae92d0cdea618506c60b')
# Use the right mkspecs file
if [[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]]; then
_platform=win32-clang-g++
else
_platform=win32-g++
fi
# Helper macros to help make tasks easier #
apply_patch_with_msg() {
for _patch in "$@"
do
msg2 "Applying ${_patch}"
patch -Nbp1 -i "${srcdir}/${_patch}"
done
}
prepare() {
cd $srcdir/${_pkgfn}
apply_patch_with_msg \
001-appending-qt6-to-remove-qt5-conflict.patch \
002-fix-qtdocs-helpers-cmake.patch \
003-adjust-qmake-conf-mingw.patch \
004-qt-6.2.0-win32-g-Add-QMAKE_EXTENSION_IMPORTLIB-defaulting-to-.patch \
005-qt-6.7.0-opengl-header.patch \
006-qt-6.2.0-dont-add-resource-files-to-qmake-libs.patch \
008-freetype-fonts-fallback-dir.patch \
009-qfileinfo-undefine-mingw-stat.patch \
011-qt6-windeployqt-fixes.patch
if [[ ${MINGW_PACKAGE_PREFIX} != *-clang-* ]]; then
apply_patch_with_msg \
010-export-some-constexpr-variables.patch
fi
local _ARCH_TUNE=
if [[ ${CARCH} == x86_64 ]]; then
_ARCH_TUNE="-march=nocona -msahf -mtune=generic"
fi
BIGOBJ_FLAGS="-Wa,-mbig-obj"
# Append these ones ..
sed -i "s|^QMAKE_CFLAGS .*= \(.*\)$|QMAKE_CFLAGS = \1 ${_ARCH_TUNE} ${BIGOBJ_FLAGS}|g" mkspecs/${_platform}/qmake.conf
sed -i "s|^QMAKE_CXXFLAGS .*= \(.*\)$|QMAKE_CXXFLAGS = \1 ${_ARCH_TUNE} ${BIGOBJ_FLAGS}|g" mkspecs/${_platform}/qmake.conf
}
build() {
mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM}
if [[ ${CC} == clang ]]; then
CXXFLAGS+=" -Wno-character-conversion"
fi
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
${MINGW_PREFIX}/bin/cmake \
--log-level=STATUS \
-GNinja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DQT_QMAKE_TARGET_MKSPEC=${_platform} \
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
-DINSTALL_INCLUDEDIR=include/qt6 \
-DINSTALL_ARCHDATADIR=share/qt6 \
-DINSTALL_DATADIR=share/qt6 \
-DINSTALL_MKSPECSDIR=share/qt6/mkspecs \
-DINSTALL_DESCRIPTIONSDIR=share/qt6/modules \
-DFEATURE_system_doubleconversion=ON \
-DFEATURE_system_freetype=ON \
-DFEATURE_system_jpeg=ON \
-DFEATURE_system_harfbuzz=ON \
-DFEATURE_system_pcre2=ON \
-DFEATURE_system_png=ON \
-DFEATURE_system_sqlite=ON \
-DFEATURE_system_zlib=ON \
-DFEATURE_zstd=ON \
-DFEATURE_openssl=ON \
-DFEATURE_opengl=ON \
-DFEATURE_opengl_desktop=ON \
-DFEATURE_dbus=ON \
-DFEATURE_glib=ON \
-DFEATURE_icu=ON \
-DFEATURE_pkg_config=ON \
-DFEATURE_vulkan=ON \
-DFEATURE_sql_sqlite=ON \
-DFEATURE_sql_psql=ON \
-DFEATURE_sql_mysql=ON \
-DFEATURE_sql_odbc=ON \
-DFEATURE_sql_ibase=ON \
-DFEATURE_gtk3=OFF \
-DFEATURE_regularexpression=ON \
-DFEATURE_cxx20=ON \
-DFEATURE_cpp_winrt=OFF \
-DFEATURE_force_debug_info=ON \
-DFEATURE_separate_debug_info=ON \
../${_pkgfn}
PATH=$PWD/bin:$PATH ${MINGW_PREFIX}/bin/cmake --build .
}
package_qt6-base() {
depends=("${MINGW_PACKAGE_PREFIX}-double-conversion"
"${MINGW_PACKAGE_PREFIX}-dbus"
"${MINGW_PACKAGE_PREFIX}-freetype"
"${MINGW_PACKAGE_PREFIX}-glib2"
"${MINGW_PACKAGE_PREFIX}-harfbuzz"
"${MINGW_PACKAGE_PREFIX}-icu"
"${MINGW_PACKAGE_PREFIX}-libb2"
"${MINGW_PACKAGE_PREFIX}-libjpeg-turbo"
"${MINGW_PACKAGE_PREFIX}-libpng"
"${MINGW_PACKAGE_PREFIX}-md4c"
"${MINGW_PACKAGE_PREFIX}-openssl"
"${MINGW_PACKAGE_PREFIX}-pcre2"
"${MINGW_PACKAGE_PREFIX}-sqlite3"
"${MINGW_PACKAGE_PREFIX}-vulkan-loader"
"${MINGW_PACKAGE_PREFIX}-vulkan-headers"
"${MINGW_PACKAGE_PREFIX}-zlib"
"${MINGW_PACKAGE_PREFIX}-zstd")
optdepends=("${MINGW_PACKAGE_PREFIX}-libmariadbclient: MySQL/MariaDB driver"
"${MINGW_PACKAGE_PREFIX}-postgresql: PostgreSQL driver"
"${MINGW_PACKAGE_PREFIX}-firebird: Firebird/iBase driver")
groups=("${MINGW_PACKAGE_PREFIX}-qt6")
DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install build-${MSYSTEM}
install -d "$pkgdir${MINGW_PREFIX}"/share/licenses/${_realname}
install -Dm644 $_pkgfn/LICENSES/* -t "$pkgdir${MINGW_PREFIX}"/share/licenses/${_realname}
# Seperate debug-info files
rsync -armR --remove-source-files --include="*/" --include="*.debug" --exclude="*" --prune-empty-dirs "${pkgdir}"/.${MINGW_PREFIX} "${srcdir}"/${MSYSTEM}-debug/
# Restore qmake6, qtpaths6 and windeployqt6
ln -s "${pkgdir}"${MINGW_PREFIX}/bin/qmake-qt6 "${pkgdir}"${MINGW_PREFIX}/bin/qmake6.exe
ln -s "${pkgdir}"${MINGW_PREFIX}/bin/qtpaths-qt6 "${pkgdir}"${MINGW_PREFIX}/bin/qtpaths6.exe
ln -s "${pkgdir}"${MINGW_PREFIX}/bin/windeployqt-qt6 "${pkgdir}"${MINGW_PREFIX}/bin/windeployqt6.exe
# Fix *.pri, *.bat and *.cmake files
local PREFIX_WIN=$(cygpath -m ${MINGW_PREFIX})
find "${pkgdir}${MINGW_PREFIX}/share/qt6" -type f \( -name '*.pri' -o -name '*.bat' \) \
-exec sed -i -e "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" {} \;
find "${pkgdir}${MINGW_PREFIX}/bin" -type f \( -name '*.bat' \) \
-exec sed -i -e "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" {} \;
find "${pkgdir}${MINGW_PREFIX}/lib/cmake" -type f \( -name '*.cmake' \) \
-exec sed -i -e "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" {} \;
}
package_qt6-base-debug() {
depends=("${MINGW_PACKAGE_PREFIX}-${_realname}")
groups=("${MINGW_PACKAGE_PREFIX}-qt6-debug")
options=('!strip')
cp -rf "${srcdir}"/${MSYSTEM}-debug${MINGW_PREFIX} "${pkgdir}"/
}
# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
# vim: set ft=bash :
# generate wrappers
for _name in "${pkgname[@]}"; do
_short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
_func="$(declare -f "${_short}")"
eval "${_func/#${_short}/package_${_name}}"
done
# template end;