From 8688694af07d1a2fcfa245e59065e1293ed9b983 Mon Sep 17 00:00:00 2001 From: mark Date: Mon, 21 Nov 2016 23:27:52 +0100 Subject: [PATCH] COMP: Ensure makeQt work (issue #11) --- etc/relocateQt | 28 +++++++---- etc/tools/QtFunctions | 50 ++++++++++---------- makeQt | 107 ++++++++++++++++++++++++++++-------------- 3 files changed, 116 insertions(+), 69 deletions(-) diff --git a/etc/relocateQt b/etc/relocateQt index 1542115..915ab0b 100755 --- a/etc/relocateQt +++ b/etc/relocateQt @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation -# \\/ M anipulation | +# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -26,12 +26,13 @@ # etc/relocateQt # # Description -# Change prefix when relocating qt installation +# Change prefix when relocating QT installation # #------------------------------------------------------------------------------ -qtVERSION=4.7.2 +qtVERSION=4.8.7 + #------------------------------------------------------------------------------ -# run from third-party directory only +# Run from third-party directory only wmakeCheckPwd "$WM_THIRD_PARTY_DIR" || { echo "Error: Current directory is not \$WM_THIRD_PARTY_DIR" echo " The environment variables are inconsistent with the installation." @@ -49,15 +50,18 @@ usage() { usage: ${0##*/} [OPTION] [VERSION] options: - -force create qt.conf and edit pkgconfig to use \${prefix} + -force Create qt.conf and edit pkgconfig to use \${prefix} -help +Adjust prefix in qt.conf and pkgconfig files after relocating third-party +with a QT installation. + * adjust relocation prefix for $qtVERSION USAGE exit 1 } - +#------------------------------------------------------------------------------ unset forceOpt # parse options @@ -70,9 +74,10 @@ do -f | -force) forceOpt=true ;; - [1-9]* | qt-[1-9]*) + -qt-[1-9]* | [1-9]* | qt-*) + # -qt-VERSION, VERSION, qt-VERSION, qt-everywhere-opensource-src-VERSION qtVERSION="${1%%/}"; - qtVERSION="${qtVERSION#qt-}" + qtVERSION="${qtVERSION##*-}" ;; *) die "unknown option/argument: '$1'" @@ -82,9 +87,12 @@ do done #------------------------------------------------------------------------------ -prefixDIR=$installBASE/qt-$qtVERSION +QT_ARCH_PATH=$installBASE/qt-$qtVERSION -[ "${forceOpt:-false}" = true ] && finalizeQt +if [ "${forceOpt:-false}" = true ] +then + finalizeQt +fi changePrefix diff --git a/etc/tools/QtFunctions b/etc/tools/QtFunctions index 8d6e3ac..363de9e 100644 --- a/etc/tools/QtFunctions +++ b/etc/tools/QtFunctions @@ -3,7 +3,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation -# \\/ M anipulation | +# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -30,41 +30,41 @@ #------------------------------------------------------------------------------ # -# create a qt.conf file in the QT bin/ -# this can be modified easily if the qt installation gets relocated +# Create a qt.conf file in the QT bin/ +# - this can be modified easily if the qt installation is relocated # createQtConf() { echo "create:" - echo " $prefixDIR/bin/qt.conf" + echo " $QT_ARCH_PATH/bin/qt.conf" - [ -n "$prefixDIR" -a -d "$prefixDIR/bin" ] || { - echo "Error: prefixDIR not correctly set" + [ -n "$QT_ARCH_PATH" -a -d "$QT_ARCH_PATH/bin" ] || { + echo "Error: QT_ARCH_PATH not correctly set" return } - echo "[Paths]" > $prefixDIR/bin/qt.conf - echo "Prefix=$prefixDIR" >> $prefixDIR/bin/qt.conf + echo "[Paths]" > $QT_ARCH_PATH/bin/qt.conf + echo "Prefix=$QT_ARCH_PATH" >> $QT_ARCH_PATH/bin/qt.conf } # -# adjust pkgconfig information +# Adjust pkgconfig information # to generalize *location=, -L/... and -I/... # to use ${prefix} # adjustPkgConfig() { echo "edit pkgconfig:" - echo " $prefixDIR/lib/pkgconfig/*.pc" + echo " $QT_ARCH_PATH/lib/pkgconfig/*.pc" - [ -n "$prefixDIR" -a -d "$prefixDIR/lib/pkgconfig" ] || { - echo "Error: prefixDIR not correctly set" + [ -n "$QT_ARCH_PATH" -a -d "$QT_ARCH_PATH/lib/pkgconfig" ] || { + echo "Error: QT_ARCH_PATH not correctly set" return } ( - cd $prefixDIR/lib/pkgconfig || exit + cd $QT_ARCH_PATH/lib/pkgconfig || exit unset nfiles for i in *.pc @@ -73,8 +73,8 @@ adjustPkgConfig() then nfiles="x$nfiles" sed -i \ - -e 's@\(location=\)'"$prefixDIR/"'@\1${prefix}/@' \ - -e 's@\(-[IL]\)'"$prefixDIR/"'@\1${prefix}/@g' \ + -e 's@\(location=\)'"$QT_ARCH_PATH/"'@\1${prefix}/@' \ + -e 's@\(-[IL]\)'"$QT_ARCH_PATH/"'@\1${prefix}/@g' \ $i fi done @@ -84,29 +84,29 @@ adjustPkgConfig() # -# change prefix=... and Prefix=... to use ${prefix} +# Change prefix=... and Prefix=... to use ${prefix} # changePrefix() { echo "relocate QT installation to new prefix directory:" - echo " $prefixDIR" + echo " $QT_ARCH_PATH" echo "edit:" - echo " $prefixDIR/bin/qt.conf" - echo " $prefixDIR/lib/pkgconfig/*.pc" + echo " $QT_ARCH_PATH/bin/qt.conf" + echo " $QT_ARCH_PATH/lib/pkgconfig/*.pc" - [ -n "$prefixDIR" -a -d "$prefixDIR/bin" -a -d "$prefixDIR/lib/pkgconfig" ] || { - echo "Error: prefixDIR not correctly set" + [ -n "$QT_ARCH_PATH" -a -d "$QT_ARCH_PATH/bin" -a -d "$QT_ARCH_PATH/lib/pkgconfig" ] || { + echo "Error: QT_ARCH_PATH not correctly set" return } # adjust qt.conf - for i in $prefixDIR/bin/qt.conf + for i in $QT_ARCH_PATH/bin/qt.conf do if [ -f "$i" ] then nfiles="x$nfiles" sed -i \ - -e 's@^\([Pp]refix=\).*$@\1'"$prefixDIR@" \ + -e 's@^\([Pp]refix=\).*$@\1'"$QT_ARCH_PATH@" \ $i echo " edited 1 file" fi @@ -114,7 +114,7 @@ changePrefix() # adjust pkgconfig files ( - cd $prefixDIR/lib/pkgconfig || exit + cd $QT_ARCH_PATH/lib/pkgconfig || exit unset nfiles for i in *.pc @@ -123,7 +123,7 @@ changePrefix() then nfiles="x$nfiles" sed -i \ - -e 's@^\([Pp]refix=\).*$@\1'"$prefixDIR@" \ + -e 's@^\([Pp]refix=\).*$@\1'"$QT_ARCH_PATH@" \ $i fi done diff --git a/makeQt b/makeQt index d0723fa..1b65e6e 100755 --- a/makeQt +++ b/makeQt @@ -4,7 +4,7 @@ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation -# \\/ M anipulation | +# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -26,13 +26,14 @@ # makeQt # # Description -# Build script for qt-everywhere-opensource-src +# Build script for QT (the qt-everywhere-opensource-src package) # #------------------------------------------------------------------------------ -qtVERSION=4.7.3 +qtVERSION=4.8.7 qtTYPE=qt-everywhere-opensource-src + #------------------------------------------------------------------------------ -# run from third-party directory only +# Run from third-party directory only wmakeCheckPwd "$WM_THIRD_PARTY_DIR" || { echo "Error: Current directory is not \$WM_THIRD_PARTY_DIR" echo " The environment variables are inconsistent with the installation." @@ -59,10 +60,11 @@ USAGE exit 1 } #------------------------------------------------------------------------------ - -# ensure configure gets the correct C/C++ compiler -[ -n "$WM_CC" ] && export CC="$WM_CC" -[ -n "$WM_CXX" ] && export CXX="$WM_CXX" +# export WM settings in a form that GNU configure recognizes +[ -n "$WM_CC" ] && export CC="$WM_CC" +[ -n "$WM_CXX" ] && export CXX="$WM_CXX" +[ -n "$WM_CFLAGS" ] && export CFLAGS="$WM_CFLAGS" +[ -n "$WM_CXXFLAGS" ] && export CXXFLAGS="$WM_CXXFLAGS" # parse options while [ "$#" -gt 0 ] @@ -75,9 +77,10 @@ do export CC=gcc # use gcc/g++ export CXX=g++ ;; - [1-9]* | qt-[1-9]*) + -qt-[1-9]* | [1-9]* | qt-*) + # -qt-VERSION, VERSION, qt-VERSION, qt-everywhere-opensource-src-VERSION qtVERSION="${1%%/}"; - qtVERSION="${qtVERSION#qt-}" + qtVERSION="${qtVERSION##*-}" ;; *) die "unknown option/argument: '$1'" @@ -85,47 +88,83 @@ do esac shift done +qtPACKAGE=$qtTYPE-$qtVERSION + +# nothing to build +if _foamIsNone "$qtPACKAGE" +then + echo "Using qt-none (skip ThirdParty build of QT)" + exit 0 +elif _foamIsSystem "$qtPACKAGE" +then + echo "Using qt-system" + exit 0 +fi #------------------------------------------------------------------------------ -qtPACKAGE=$qtTYPE-$qtVERSION -prefixDIR=$installBASE/qt-$qtVERSION - - # # Build QT -# -echo "---------------" -if [ -d "$prefixDIR" -a -r "$prefixDIR/bin/qmake" ] + +QT_ARCH_PATH=$installBASE/qt-$qtVERSION +QT_SOURCE_DIR=$WM_THIRD_PARTY_DIR/$qtPACKAGE + +echo +echo ======================================== +echo "Build Qt $qtPACKAGE" +echo +if [ -d "$QT_ARCH_PATH" -a -r "$QT_ARCH_PATH/bin/qmake" ] then echo "Already built: Qt-$qtVERSION" else echo "Starting build: Qt-$qtVERSION" ( - sourceDIR=$WM_THIRD_PARTY_DIR/$qtPACKAGE + # Configuration options: + unset configOpt + configOpt="$configOpt -nomake examples" + + case "$qtVERSION" in + 4*) # QT-4 + # Without demos. + configOpt="$configOpt -nomake demos" + + # Without old qt3 transition code + configOpt="$configOpt -no-qt3support" + + # Without WebKit - uses std:tr1 and does not compile with c++11 + # Fortunately WebKit is now optional for ParaView + configOpt="$configOpt -no-webkit" + ;; + + *) # QT-5 + # Avoid too many X11 system dependencies. + configOpt="$configOpt -qt-xcb" + ;; + esac + + # end of configuration options + # ---------------------------- buildDIR=$buildBASE/$qtPACKAGE - cd $sourceDIR || exit 1 - make distclean 2>/dev/null + cd $QT_SOURCE_DIR || exit 1 + [ -e Makefile ] && make distclean 2>/dev/null - rm -rf $buildDIR + # Remove any existing build folder and recreate + rm -rf $QT_ARCH_DIR + rm -rf $buildDIR 2>/dev/null mkdir -p $buildDIR - cd $buildDIR - # remove old junk - rm -rf $prefixDIR + # Remove any remnants from a previous shadow build + rm -f "$QT_SOURCE_DIR/.qmake.cache" 2>/dev/null + rm -f "$QT_SOURCE_DIR/src/corelib/global/qconfig.h" 2>/dev/null + rm -f "$QT_SOURCE_DIR/src/corelib/global/qconfig.cpp" 2>/dev/null - # remove any remnants from a previous shadow build - rm -f "$sourceDIR/.qmake.cache" 2>/dev/null - rm -f "$sourceDIR/src/corelib/global/qconfig.h" 2>/dev/null - rm -f "$sourceDIR/src/corelib/global/qconfig.cpp" 2>/dev/null + cd $buildDIR || exit 1 - # compile as opensource, accepting LGPL conditions - echo "yes" | \ - $sourceDIR/configure \ - --prefix=$prefixDIR \ + # Compile as opensource, accepting LGPL conditions (yes) + echo yes | $QT_SOURCE_DIR/configure \ + -prefix $QT_ARCH_PATH \ -opensource \ - -nomake demos \ - -nomake examples \ + $configOpt \ && time make -j $WM_NCOMPPROCS \ && make install \ && echo "Built: Qt-$qtVERSION" \