From e321e17f719f2054bc25776d6afe2209741caff2 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Sat, 7 Nov 2015 21:44:27 +0000 Subject: [PATCH] Reinstated Qt build scripts Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1905 --- etc/relocateQt | 92 ++++++++++++++++++++++++++ etc/tools/QtFunctions | 148 ++++++++++++++++++++++++++++++++++++++++++ makeQt | 140 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 380 insertions(+) create mode 100755 etc/relocateQt create mode 100644 etc/tools/QtFunctions create mode 100755 makeQt diff --git a/etc/relocateQt b/etc/relocateQt new file mode 100755 index 0000000..ac6f186 --- /dev/null +++ b/etc/relocateQt @@ -0,0 +1,92 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenFOAM. If not, see . +# +# Script +# etc/relocateQt +# +# Description +# Change prefix when relocating qt installation +# +#------------------------------------------------------------------------------ +qtVERSION=4.7.2 +#------------------------------------------------------------------------------ +# 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." + echo " Check the OpenFOAM entries in your dot-files and source them." + exit 1 +} +. etc/tools/ThirdPartyFunctions +. etc/tools/QtFunctions +#------------------------------------------------------------------------------ + +usage() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat<. +# +# File +# etc/tools/QtFunction +# +# Description +# Functions for helping relocate a QT installation +# +#------------------------------------------------------------------------------ + +# +# create a qt.conf file in the QT bin/ +# this can be modified easily if the qt installation gets relocated +# +createQtConf() +{ + echo "create:" + echo " $prefixDIR/bin/qt.conf" + + [ -n "$prefixDIR" -a -d "$prefixDIR/bin" ] || { + echo "Error: prefixDIR not correctly set" + return + } + + echo "[Paths]" > $prefixDIR/bin/qt.conf + echo "Prefix=$prefixDIR" >> $prefixDIR/bin/qt.conf +} + + +# +# adjust pkgconfig information +# to generalize *location=, -L/... and -I/... +# to use ${prefix} +# +adjustPkgConfig() +{ + echo "edit pkgconfig:" + echo " $prefixDIR/lib/pkgconfig/*.pc" + + [ -n "$prefixDIR" -a -d "$prefixDIR/lib/pkgconfig" ] || { + echo "Error: prefixDIR not correctly set" + return + } + + ( + cd $prefixDIR/lib/pkgconfig || exit + + unset nfiles + for i in *.pc + do + if [ -f "$i" ] + then + nfiles="x$nfiles" + sed -i \ + -e 's@\(location=\)'"$prefixDIR/"'@\1${prefix}/@' \ + -e 's@\(-[IL]\)'"$prefixDIR/"'@\1${prefix}/@g' \ + $i + fi + done + echo " edited ${#nfiles} files" + ) +} + + +# +# change prefix=... and Prefix=... to use ${prefix} +# +changePrefix() +{ + echo "relocate QT installation to new prefix directory:" + echo " $prefixDIR" + echo "edit:" + echo " $prefixDIR/bin/qt.conf" + echo " $prefixDIR/lib/pkgconfig/*.pc" + + [ -n "$prefixDIR" -a -d "$prefixDIR/bin" -a -d "$prefixDIR/lib/pkgconfig" ] || { + echo "Error: prefixDIR not correctly set" + return + } + + # adjust qt.conf + for i in $prefixDIR/bin/qt.conf + do + if [ -f "$i" ] + then + nfiles="x$nfiles" + sed -i \ + -e 's@^\([Pp]refix=\).*$@\1'"$prefixDIR@" \ + $i + echo " edited 1 file" + fi + done + + # adjust pkgconfig files + ( + cd $prefixDIR/lib/pkgconfig || exit + + unset nfiles + for i in *.pc + do + if [ -f "$i" ] + then + nfiles="x$nfiles" + sed -i \ + -e 's@^\([Pp]refix=\).*$@\1'"$prefixDIR@" \ + $i + fi + done + echo " edited ${#nfiles} files" + ) + +} + +# ------------------------------------------------------------------------------ + +# +# create qt.conf and adjustPkgConfig to use ${prefix} internally +# +finalizeQt() +{ + echo "Create/Edit files to ease later relocation of a QT installation" + createQtConf + adjustPkgConfig +} + + +# ----------------------------------------------------------------- end-of-file diff --git a/makeQt b/makeQt new file mode 100755 index 0000000..c2d94ed --- /dev/null +++ b/makeQt @@ -0,0 +1,140 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenFOAM. If not, see . +# +# Script +# makeQt +# +# Description +# Build script for qt-everywhere-opensource-src +# +#------------------------------------------------------------------------------ +qtVERSION=4.7.3 +qtTYPE=qt-everywhere-opensource-src +#------------------------------------------------------------------------------ +# 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." + echo " Check the OpenFOAM entries in your dot-files and source them." + exit 1 +} +. etc/tools/ThirdPartyFunctions +. etc/tools/QtFunctions +#------------------------------------------------------------------------------ + +usage() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat</dev/null + + rm -rf $buildDIR + mkdir -p $buildDIR + cd $buildDIR + + # remove old junk + rm -rf $prefixDIR + + # 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 + + # compile as opensource, accepting LGPL conditions + echo "yes" | \ + $sourceDIR/configure \ + --prefix=$prefixDIR \ + -opensource \ + -nomake demos \ + -nomake examples \ + && time make -j $WM_NCOMPPROCS \ + && make install \ + && echo "Built: Qt-$qtVERSION" \ + && finalizeQt +) || { + echo "Error building: Qt-$qtVERSION" + exit 1 +} +fi + + +# ----------------------------------------------------------------- end-of-file