commit: 3b968a1e761d32b1f87cfcecda24178ee1da95ec Author: Davide Pesavento <pesa <AT> gentoo <DOT> org> AuthorDate: Wed Jul 23 18:03:08 2014 +0000 Commit: Davide Pesavento <pesa <AT> gentoo <DOT> org> CommitDate: Wed Jul 23 18:19:11 2014 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/qt.git;a=commit;h=3b968a1e
[qt5-build.eclass] Introduce QT5_GENTOO_CONFIG eclass variable. Second part of the fix for bug 510556. Provides a declarative interface for easily managing QT_CONFIG values in qconfig.pri and QT_* macros in qconfig.h that depend on USE flags. Will eventually replace the QCONFIG_* variables when all ebuilds are converted. --- eclass/qt5-build.eclass | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/eclass/qt5-build.eclass b/eclass/qt5-build.eclass index 2ddcd86..206aa31 100644 --- a/eclass/qt5-build.eclass +++ b/eclass/qt5-build.eclass @@ -107,6 +107,14 @@ case ${QT5_BUILD_TYPE} in release) : ${QT5_BUILD_DIR:=${S}} ;; # workaround for bug 497312 esac +# @ECLASS-VARIABLE: QT5_GENTOO_CONFIG +# @DEFAULT_UNSET +# @DESCRIPTION: +# Array of <useflag:feature:macro> triplets that are evaluated in src_install +# to generate the per-package list of enabled QT_CONFIG features and macro +# definitions, which are then merged together with all other Qt5 packages +# installed on the system to obtain the global qconfig.{h,pri} files. + # @ECLASS-VARIABLE: QCONFIG_ADD # @DEFAULT_UNSET # @DESCRIPTION: @@ -294,12 +302,16 @@ qt5-build_src_install() { emake INSTALL_ROOT="${D}" install_{mkspecs,qmake,syncqt} popd >/dev/null || die - # create an empty Gentoo/gentoo-qconfig.h - dodir "${QT5_HEADERDIR#${EPREFIX}}"/Gentoo - : > "${D}${QT5_HEADERDIR}"/Gentoo/gentoo-qconfig.h + # install an empty Gentoo/gentoo-qconfig.h in ${D} + # so that it's placed under package manager control + > "${T}"/gentoo-qconfig.h + ( + insinto "${QT5_HEADERDIR#${EPREFIX}}"/Gentoo + doins "${T}"/gentoo-qconfig.h + ) # include gentoo-qconfig.h at the beginning of QtCore/qconfig.h - sed -i -e '2a#include <Gentoo/gentoo-qconfig.h>\n' \ + sed -i -e '1a#include <Gentoo/gentoo-qconfig.h>\n' \ "${D}${QT5_HEADERDIR}"/QtCore/qconfig.h \ || die "sed failed (qconfig.h)" fi @@ -589,9 +601,25 @@ qt5_qmake() { # Creates and installs gentoo-specific ${PN}-qconfig.{h,pri} files. qt5_install_module_qconfigs() { local x + for x in "${QT5_GENTOO_CONFIG[@]}"; do + local flag=${x%%:*} + x=${x#${flag}:} + local feature=${x%%:*} + x=${x#${feature}:} + local macro=${x} + macro=$(tr 'a-z-' 'A-Z_' <<< "${macro}") + + if [[ -z ${flag} ]] || use ${flag}; then + [[ -n ${feature} ]] && QCONFIG_ADD+=("${feature}") + [[ -n ${macro} ]] && QCONFIG_DEFINE+=("QT_${macro}") + else + [[ -n ${feature} ]] && QCONFIG_REMOVE+=("${feature}") + [[ -n ${macro} ]] && QCONFIG_DEFINE+=("QT_NO_${macro}") + fi + done # qconfig.h - : > "${T}"/${PN}-qconfig.h + > "${T}"/${PN}-qconfig.h for x in "${QCONFIG_DEFINE[@]}"; do echo "#define ${x}" >> "${T}"/${PN}-qconfig.h done @@ -601,7 +629,7 @@ qt5_install_module_qconfigs() { ) # qconfig.pri - : > "${T}"/${PN}-qconfig.pri + > "${T}"/${PN}-qconfig.pri [[ -n ${QCONFIG_ADD[@]} ]] && echo "QCONFIG_ADD=${QCONFIG_ADD[@]}" \ >> "${T}"/${PN}-qconfig.pri [[ -n ${QCONFIG_REMOVE[@]} ]] && echo "QCONFIG_REMOVE=${QCONFIG_REMOVE[@]}" \ @@ -615,8 +643,8 @@ qt5_install_module_qconfigs() { # @FUNCTION: qt5_regenerate_global_qconfigs # @INTERNAL # @DESCRIPTION: -# Generates gentoo-specific qconfig.{h,pri}. -# Don't die here because dying in pkg_post{inst,rm} just makes things worse. +# Generates Gentoo-specific qconfig.{h,pri} according to the build configuration. +# Don't call die here because dying in pkg_post{inst,rm} only makes things worse. qt5_regenerate_global_qconfigs() { einfo "Regenerating gentoo-qconfig.h"