Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 553856 Details for
Bug 670060
qt5-build.eclass does not work with crossdev
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
qt5-build.eclass patch v2 (fixed ar invocation)
qt5-build-eclass-cross-compile.patch (text/plain), 6.93 KB, created by
Nicolas Chappe
on 2018-11-02 16:51:56 UTC
(
hide
)
Description:
qt5-build.eclass patch v2 (fixed ar invocation)
Filename:
MIME Type:
Creator:
Nicolas Chappe
Created:
2018-11-02 16:51:56 UTC
Size:
6.93 KB
patch
obsolete
>--- a/eclass/qt5-build.eclass 2018-03-29 10:17:46.817020209 +0200 >+++ b/eclass/qt5-build.eclass 2018-11-01 16:11:32.208287737 +0100 >@@ -34,6 +34,12 @@ > # Array variable containing the source directories that should be built. > # All paths must be relative to ${S}. > >+# @ECLASS-VARIABLE: QT5_COMPILE_FOR_HOST_SUBDIR >+# @DEFAULT_UNSET >+# @DESCRIPTION: >+# Variable containing a source directory that should be built for the host in >+# case of cross-compilation. >+ > # @ECLASS-VARIABLE: QT5_GENTOO_CONFIG > # @DEFAULT_UNSET > # @DESCRIPTION: >@@ -197,6 +203,20 @@ > sed -i -e "/^QMAKE_CONF_COMPILER=/ s:=.*:=\"$(tc-getCXX)\":" \ > configure || die "sed failed (QMAKE_CONF_COMPILER)" > >+ if tc-is-cross-compiler; then >+ # Don't take the host into account in configure tests, since we build everything for the target >+ sed -i -e 's/\"host": true/"host": false/' configure.json || die >+ >+ # Use tools of the host machine >+ sed -i -e 's|\$\$\[QT_HOST_BINS]|/usr/lib/qt5/bin|' mkspecs/features/qt_functions.prf || die >+ >+ # Avoid applying -before to all the subsequent qmake arguments >+ sed -i -e 's/-early "\\\"CONFIG += cross_compile\\\""/& -before/' mkspecs/features/qt_configure.prf || die >+ >+ # Make qtdbus cross-compile >+ sed -i -e 's/CONFIG += force_bootstrap/CONFIG +=/' mkspecs/features/qt_build_config.prf || die >+ fi >+ > if [[ ${QT5_MINOR_VERSION} -le 7 ]]; then > # Respect toolchain and flags in config.tests > find config.tests/unix -name '*.test' -type f -execdir \ >@@ -213,8 +233,22 @@ > src/{corelib/corelib,gui/gui}.pro || die "sed failed (optimize_full)" > > # Respect build variables in configure tests (bug #639494) >- if [[ ${QT5_MINOR_VERSION} -ge 9 ]]; then >- sed -i -e "s|\"\$outpath/bin/qmake\" \"\$relpathMangled\" -- \"\$@\"|& $(qt5_qmake_args) |" configure || die >+ local mkspec= >+ if use kernel_FreeBSD; then >+ if tc-is-gcc; then >+ mkspec=freebsd-g++ >+ elif tc-is-clang; then >+ mkspec=freebsd-clang >+ fi >+ elif use kernel_linux; then >+ if tc-is-gcc; then >+ mkspec=linux-g++ >+ elif tc-is-clang; then >+ mkspec=linux-clang >+ fi >+ fi >+ if [[ -n ${mkspec} ]]; then >+ sed -i -e "/load(qt_config)/i\\$(qt5_qmake_vars)" mkspecs/${mkspec}/qmake.conf || die > fi > fi > >@@ -229,6 +263,9 @@ > if [[ ${QT5_MODULE} == qtbase ]]; then > qt5_base_configure > fi >+ if [[ ${PN} == qtcore ]]; then >+ emake -C ${QT5_BUILD_DIR} sub-qmake-qmake-aux-pro-qmake_all || die >+ fi > > qt5_foreach_target_subdir qt5_qmake > } >@@ -272,6 +309,9 @@ > # @DESCRIPTION: > # Runs emake install in the target directories. > qt5-build_src_install() { >+ find . -name 'Makefile*' -type f -execdir \ >+ sed -i -e "s|\\\$(INSTALL_ROOT)${SYSROOT}|\\\$(INSTALL_ROOT)|g" '{}' + || die >+ > qt5_foreach_target_subdir emake INSTALL_ROOT="${D}" install > > if [[ ${PN} == qtcore ]]; then >@@ -456,7 +496,7 @@ > > if [[ ${QT5_MODULE} == qtbase ]]; then > # see mkspecs/features/qt_config.prf >- export QMAKEMODULES="${QT5_BUILD_DIR}/mkspecs/modules:${S}/mkspecs/modules:${QT5_ARCHDATADIR}/mkspecs/modules" >+ export QMAKEMODULES="${QT5_BUILD_DIR}/mkspecs/modules:${S}/mkspecs/modules:${SYSROOT}${QT5_ARCHDATADIR}/mkspecs/modules" > fi > } > >@@ -544,6 +584,8 @@ > -examplesdir "${QT5_EXAMPLESDIR}" > -testsdir "${QT5_TESTSDIR}" > >+ $(tc-is-cross-compiler && echo -sysroot "${SYSROOT}" -external-hostbindir /usr/lib/qt5/bin) >+ > # force appropriate compiler > $(if use kernel_FreeBSD; then > if tc-is-gcc; then >@@ -717,31 +759,32 @@ > > } > >-# @FUNCTION: qt5_qmake_args >+# @FUNCTION: qt5_qmake_vars > # @INTERNAL > # @DESCRIPTION: > # Helper function to get the various toolchain-related variables. >-qt5_qmake_args() { >- echo \ >- QMAKE_AR=\"$(tc-getAR)\" \ >- QMAKE_CC=\"$(tc-getCC)\" \ >- QMAKE_LINK_C=\"$(tc-getCC)\" \ >- QMAKE_LINK_C_SHLIB=\"$(tc-getCC)\" \ >- QMAKE_CXX=\"$(tc-getCXX)\" \ >- QMAKE_LINK=\"$(tc-getCXX)\" \ >- QMAKE_LINK_SHLIB=\"$(tc-getCXX)\" \ >- QMAKE_OBJCOPY=\"$(tc-getOBJCOPY)\" \ >- QMAKE_RANLIB= \ >- QMAKE_STRIP=\"$(tc-getSTRIP)\" \ >- QMAKE_CFLAGS=\"${CFLAGS}\" \ >- QMAKE_CFLAGS_RELEASE= \ >- QMAKE_CFLAGS_DEBUG= \ >- QMAKE_CXXFLAGS=\"${CXXFLAGS}\" \ >- QMAKE_CXXFLAGS_RELEASE= \ >- QMAKE_CXXFLAGS_DEBUG= \ >- QMAKE_LFLAGS=\"${LDFLAGS}\" \ >- QMAKE_LFLAGS_RELEASE= \ >- QMAKE_LFLAGS_DEBUG= >+qt5_qmake_vars() { >+ cat <<- EOF >+ QMAKE_AR = $(tc-getAR) cqs\\ >+ QMAKE_CC= $(tc-getCC)\\ >+ QMAKE_LINK_C = $(tc-getCC)\\ >+ QMAKE_LINK_C_SHLIB = $(tc-getCC)\\ >+ QMAKE_CXX = $(tc-getCXX)\\ >+ QMAKE_LINK = $(tc-getCXX)\\ >+ QMAKE_LINK_SHLIB = $(tc-getCXX)\\ >+ QMAKE_OBJCOPY = $(tc-getOBJCOPY)\\ >+ QMAKE_RANLIB =\\ >+ QMAKE_STRIP = $(tc-getSTRIP)\\ >+ QMAKE_CFLAGS = ${CFLAGS}\\ >+ QMAKE_CFLAGS_RELEASE =\\ >+ QMAKE_CFLAGS_DEBUG =\\ >+ QMAKE_CXXFLAGS = ${CXXFLAGS}\\ >+ QMAKE_CXXFLAGS_RELEASE =\\ >+ QMAKE_CXXFLAGS_DEBUG =\\ >+ QMAKE_LFLAGS = ${LDFLAGS}\\ >+ QMAKE_LFLAGS_RELEASE =\\ >+ QMAKE_LFLAGS_DEBUG = >+ EOF > } > > # @FUNCTION: qt5_qmake >@@ -750,9 +793,16 @@ > # Helper function that runs qmake in the current target subdir. > # Intended to be called by qt5_foreach_target_subdir(). > qt5_qmake() { >+ if [[ ${PWD#${QT5_BUILD_DIR}/} == ${QT5_COMPILE_FOR_HOST_SUBDIR} ]]; then >+ qt5_qmake_host >+ return >+ fi >+ > local projectdir=${PWD/#${QT5_BUILD_DIR}/${S}} > local qmakepath= >- if [[ ${QT5_MODULE} == qtbase ]]; then >+ if tc-is-cross-compiler; then >+ qmakepath=/usr/lib/qt5/bin >+ elif [[ ${QT5_MODULE} == qtbase ]]; then > qmakepath=${QT5_BUILD_DIR}/bin > else > qmakepath=${QT5_BINDIR} >@@ -760,6 +810,7 @@ > > "${qmakepath}"/qmake \ > "${projectdir}" \ >+ $([[ ${QT5_MODULE} == qtbase ]] && echo -qtconf "${S}"/bin/qt.conf) \ > CONFIG+=$(usex debug debug release) \ > CONFIG-=$(usex debug release debug) \ > QMAKE_AR="$(tc-getAR) cqs" \ >@@ -782,6 +833,50 @@ > QMAKE_LFLAGS_RELEASE= \ > QMAKE_LFLAGS_DEBUG= \ > "${myqmakeargs[@]}" \ >+ || die "qmake failed (${projectdir#${S}/})" >+} >+ >+ >+# @FUNCTION: qt5_qmake_host >+# @INTERNAL >+# @DESCRIPTION: >+# Helper function that runs qmake in the current target subdir. >+# Code is compiled for the host machine. >+qt5_qmake_host() { >+ local projectdir=${PWD/#${QT5_BUILD_DIR}/${S}} >+ local qmakepath= >+ if tc-is-cross-compiler; then >+ qmakepath=/usr/lib/qt5/bin >+ elif [[ ${QT5_MODULE} == qtbase ]]; then >+ qmakepath=${QT5_BUILD_DIR}/bin >+ else >+ qmakepath=${QT5_BINDIR} >+ fi >+ >+ "${qmakepath}"/qmake \ >+ "${projectdir}" \ >+ CONFIG+=release \ >+ CONFIG-=debug \ >+ QMAKE_AR="$(tc-getBUILD_AR) cqs" \ >+ QMAKE_CC="$(tc-getBUILD_CC)" \ >+ QMAKE_LINK_C="$(tc-getBUILD_CC)" \ >+ QMAKE_LINK_C_SHLIB="$(tc-getBUILD_CC)" \ >+ QMAKE_CXX="$(tc-getBUILD_CXX)" \ >+ QMAKE_LINK="$(tc-getBUILD_CXX)" \ >+ QMAKE_LINK_SHLIB="$(tc-getBUILD_CXX)" \ >+ QMAKE_OBJCOPY="$(tc-getBUILD_OBJCOPY)" \ >+ QMAKE_RANLIB= \ >+ QMAKE_STRIP="$(tc-getBUILD_STRIP)" \ >+ QMAKE_CFLAGS="${BUILD_CFLAGS}" \ >+ QMAKE_CFLAGS_RELEASE= \ >+ QMAKE_CFLAGS_DEBUG= \ >+ QMAKE_CXXFLAGS="${BUILD_CXXFLAGS}" \ >+ QMAKE_CXXFLAGS_RELEASE= \ >+ QMAKE_CXXFLAGS_DEBUG= \ >+ QMAKE_LFLAGS="${BUILD_LDFLAGS}" \ >+ QMAKE_LFLAGS_RELEASE= \ >+ QMAKE_LFLAGS_DEBUG= \ >+ "${myqmakeargs[@]}" \ > || die "qmake failed (${projectdir#${S}/})" > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 670060
:
553796
|
553798
|
553800
| 553856