Skip to content
Snippets Groups Projects
Commit 3e26f3df authored by Albert  Babí Oller's avatar Albert Babí Oller Committed by Albert Babí Oller
Browse files

qt-client: avoid using local Qt 5.15.0 (linux) and update dependencies

- add dependencies for building client Qt
- avoid forcing build with local Qt when no path is specified (linux)
- verify system's Qt version before building lrc + client-qt

Change-Id: I18b51647044c1f15358595710f51a88618de41f5
parent 4c58ef1c
No related branches found
No related tags found
No related merge requests found
...@@ -22,9 +22,7 @@ OSX_DISTRIBUTION_NAME = "osx" ...@@ -22,9 +22,7 @@ OSX_DISTRIBUTION_NAME = "osx"
ANDROID_DISTRIBUTION_NAME = "android" ANDROID_DISTRIBUTION_NAME = "android"
WIN32_DISTRIBUTION_NAME = "win32" WIN32_DISTRIBUTION_NAME = "win32"
# Qt 5.15 is currently only available using the maintenance tool.
QT5_VERSION = "5.15.0" QT5_VERSION = "5.15.0"
DEFAULT_QT_PATH = "~/Qt/{0}/gcc_64".format(QT5_VERSION)
# vs vars # vs vars
win_sdk_default = '10.0.16299.0' win_sdk_default = '10.0.16299.0'
...@@ -46,7 +44,7 @@ PACMAN_BASED_DISTROS = [ ...@@ -46,7 +44,7 @@ PACMAN_BASED_DISTROS = [
] ]
ZYPPER_BASED_DISTROS = [ ZYPPER_BASED_DISTROS = [
'opensuse-leap', 'opensuse-leap', 'opensuse-tumbleweed',
] ]
FLATPAK_BASED_RUNTIMES = [ FLATPAK_BASED_RUNTIMES = [
...@@ -91,16 +89,24 @@ ZYPPER_DEPENDENCIES = [ ...@@ -91,16 +89,24 @@ ZYPPER_DEPENDENCIES = [
'curl', 'gzip', 'bzip2', 'curl', 'gzip', 'bzip2',
# daemon # daemon
'speexdsp-devel', 'speex-devel', 'libdbus-c++-devel', 'jsoncpp-devel', 'yaml-cpp-devel', 'speexdsp-devel', 'speex-devel', 'libdbus-c++-devel', 'jsoncpp-devel', 'yaml-cpp-devel',
'yasm', 'libuuid-devel', 'libnettle-devel', 'libopus-devel', 'yasm', 'libuuid-devel', 'libnettle-devel', 'libopus-devel', 'libexpat-devel',
'libgnutls-devel', 'msgpack-devel', 'libavcodec-devel', 'libavdevice-devel', 'pcre-devel', 'libgnutls-devel', 'msgpack-devel', 'libavcodec-devel', 'libavdevice-devel', 'pcre-devel',
'alsa-devel', 'libpulse-devel', 'libudev-devel', 'libva-devel', 'libvdpau-devel', 'alsa-devel', 'libpulse-devel', 'libudev-devel', 'libva-devel', 'libvdpau-devel',
'libopenssl-devel', 'libopenssl-devel', 'libavutil-devel',
# lrc # lrc
'libQt5Core-devel', 'libQt5DBus-devel', 'libqt5-linguist-devel', 'libQt5Core-devel', 'libQt5DBus-devel', 'libqt5-linguist-devel',
# gnome client # client gnome / qt
'gtk3-devel', 'clutter-gtk-devel', 'qrencode-devel', 'qrencode-devel', 'NetworkManager-devel'
'gettext-tools', 'libnotify-devel', 'libappindicator3-devel', 'webkit2gtk3-devel', ]
'NetworkManager-devel', 'libcanberra-gtk3-devel'
ZYPPER_CLIENT_GNOME_DEPENDENCIES = [
'gtk3-devel', 'clutter-gtk-devel', 'gettext-tools', 'libnotify-devel', 'libappindicator3-devel',
'webkit2gtk3-devel', 'libcanberra-gtk3-devel'
]
ZYPPER_CLIENT_QT_DEPENDENCIES = [
'libqt5-qtsvg-devel', 'libqt5-qtwebengine-devel', 'libqt5-qtmultimedia-devel',
'libqt5-qtdeclarative-devel', 'libQt5QuickControls2-devel', 'libqt5-qtquickcontrols'
] ]
DNF_DEPENDENCIES = [ DNF_DEPENDENCIES = [
...@@ -111,11 +117,20 @@ DNF_DEPENDENCIES = [ ...@@ -111,11 +117,20 @@ DNF_DEPENDENCIES = [
'speex-devel', 'chrpath', 'check', 'astyle', 'uuid-c++-devel', 'gettext-devel', 'speex-devel', 'chrpath', 'check', 'astyle', 'uuid-c++-devel', 'gettext-devel',
'gcc-c++', 'which', 'alsa-lib-devel', 'systemd-devel', 'libuuid-devel', 'gcc-c++', 'which', 'alsa-lib-devel', 'systemd-devel', 'libuuid-devel',
'uuid-devel', 'gnutls-devel', 'nettle-devel', 'opus-devel', 'speexdsp-devel', 'uuid-devel', 'gnutls-devel', 'nettle-devel', 'opus-devel', 'speexdsp-devel',
'yaml-cpp-devel', 'qt5-qtbase-devel', 'swig', 'qrencode-devel', 'jsoncpp-devel', 'yaml-cpp-devel', 'qt5-qtbase-devel', 'swig', 'jsoncpp-devel',
'gtk3-devel', 'clutter-devel', 'clutter-gtk-devel', 'patch', 'libva-devel', 'openssl-devel', 'libvdpau-devel', 'msgpack-devel',
'libnotify-devel', 'libappindicator-gtk3-devel', 'patch', 'libva-devel', 'openssl-devel', 'sqlite-devel', 'openssl-static', 'pandoc', 'nasm', 'qrencode-devel', 'NetworkManager-libnm-devel',
'webkitgtk4-devel', 'NetworkManager-libnm-devel', 'libvdpau-devel', 'msgpack-devel', 'libcanberra-devel', 'bzip2'
'sqlite-devel', 'openssl-static', 'pandoc', 'nasm' ]
DNF_CLIENT_GNOME_DEPENDENCIES = [
'gtk3-devel', 'clutter-devel', 'clutter-gtk-devel', 'libnotify-devel','libappindicator-gtk3-devel',
'webkitgtk4-devel', 'libcanberra-devel'
]
DNF_CLIENT_QT_DEPENDENCIES = [
'qt5-qtsvg-devel', 'qt5-qtwebengine-devel', 'qt5-qtmultimedia-devel', 'qt5-qtdeclarative-devel',
'qt5-qtquickcontrols2-devel', 'qt5-qtquickcontrols'
] ]
APT_DEPENDENCIES = [ APT_DEPENDENCIES = [
...@@ -128,9 +143,22 @@ APT_DEPENDENCIES = [ ...@@ -128,9 +143,22 @@ APT_DEPENDENCIES = [
'libopus-dev', 'libpcre3-dev', 'libpulse-dev', 'libssl-dev', 'libopus-dev', 'libpcre3-dev', 'libpulse-dev', 'libssl-dev',
'libspeex-dev', 'libspeexdsp-dev', 'libswscale-dev', 'libtool', 'libspeex-dev', 'libspeexdsp-dev', 'libswscale-dev', 'libtool',
'libudev-dev', 'libyaml-cpp-dev', 'qtbase5-dev', 'libqt5sql5-sqlite', 'sip-tester', 'swig', 'libudev-dev', 'libyaml-cpp-dev', 'qtbase5-dev', 'libqt5sql5-sqlite', 'sip-tester', 'swig',
'uuid-dev', 'yasm', 'libqrencode-dev', 'libjsoncpp-dev', 'libappindicator3-dev', 'uuid-dev', 'yasm', 'libjsoncpp-dev', 'libva-dev', 'libvdpau-dev', 'libmsgpack-dev',
'libva-dev', 'libwebkit2gtk-4.0-dev', 'libnm-dev', 'libvdpau-dev', 'libmsgpack-dev', 'libcanberra-gtk3-dev', 'pandoc', 'nasm', 'libqrencode-dev', 'libnm-dev', 'dpkg-dev'
'pandoc', 'nasm' ]
APT_CLIENT_GNOME_DEPENDENCIES = [
'libwebkit2gtk-4.0-dev', 'libappindicator3-dev', 'libcanberra-gtk3-dev'
]
APT_CLIENT_QT_DEPENDENCIES = [
'qtmultimedia5-dev', 'libqt5svg5-dev', 'qtwebengine5-dev', 'qtdeclarative5-dev',
'qtquickcontrols2-5-dev', 'qml-module-qtquick2', 'qml-module-qtquick-controls',
'qml-module-qtquick-controls2', 'qml-module-qtquick-dialogs',
'qml-module-qtquick-layouts', 'qml-module-qtquick-privatewidgets',
'qml-module-qtquick-shapes', 'qml-module-qtquick-window2',
'qml-module-qtquick-templates2', 'qml-module-qt-labs-platform',
'qml-module-qtwebengine', 'qml-module-qtwebchannel'
] ]
PACMAN_DEPENDENCIES = [ PACMAN_DEPENDENCIES = [
...@@ -190,12 +218,12 @@ def run_powersell_cmd(cmd): ...@@ -190,12 +218,12 @@ def run_powersell_cmd(cmd):
return return
def write_qt_conf(path): def write_qt_conf(path, qt5version=QT5_VERSION):
# Add a configuration that can be supplied to qmake # Add a configuration that can be supplied to qmake
# e.g. `qmake -qt=5.15 [mode] [options] [files]` # e.g. `qmake -qt=5.15 [mode] [options] [files]`
if path == '': if path == '':
return return
with open('/usr/share/qtchooser/' + QT5_VERSION + '.conf', 'w+') as fd: with open('/usr/share/qtchooser/' + qt5version + '.conf', 'w+') as fd:
fd.write(path.rstrip('/') + '/bin\n') fd.write(path.rstrip('/') + '/bin\n')
fd.write(path.rstrip('/') + '/lib\n') fd.write(path.rstrip('/') + '/lib\n')
return return
...@@ -203,19 +231,27 @@ def write_qt_conf(path): ...@@ -203,19 +231,27 @@ def write_qt_conf(path):
def run_dependencies(args): def run_dependencies(args):
if args.qt is not None: if args.qt is not None:
write_qt_conf(args.qt) write_qt_conf(args.qt, args.qtver)
if args.distribution == WIN32_DISTRIBUTION_NAME: if args.distribution == WIN32_DISTRIBUTION_NAME:
run_powersell_cmd( run_powersell_cmd(
'Set-ExecutionPolicy Unrestricted; .\\scripts\\install-deps-windows.ps1') 'Set-ExecutionPolicy Unrestricted; .\\scripts\\install-deps-windows.ps1')
elif args.distribution in APT_BASED_DISTROS: elif args.distribution in APT_BASED_DISTROS:
if args.qt is None:
APT_DEPENDENCIES.extend(APT_CLIENT_GNOME_DEPENDENCIES)
else:
APT_DEPENDENCIES.extend(APT_CLIENT_QT_DEPENDENCIES)
execute_script( execute_script(
APT_INSTALL_SCRIPT, APT_INSTALL_SCRIPT,
{"packages": ' '.join(map(shlex.quote, APT_DEPENDENCIES))} {"packages": ' '.join(map(shlex.quote, APT_DEPENDENCIES))}
) )
elif args.distribution in DNF_BASED_DISTROS: elif args.distribution in DNF_BASED_DISTROS:
if args.qt is None:
DNF_DEPENDENCIES.extend(DNF_CLIENT_GNOME_DEPENDENCIES)
else:
DNF_DEPENDENCIES.extend(DNF_CLIENT_QT_DEPENDENCIES)
execute_script( execute_script(
RPM_INSTALL_SCRIPT, RPM_INSTALL_SCRIPT,
{"packages": ' '.join(map(shlex.quote, DNF_DEPENDENCIES))} {"packages": ' '.join(map(shlex.quote, DNF_DEPENDENCIES))}
...@@ -228,6 +264,10 @@ def run_dependencies(args): ...@@ -228,6 +264,10 @@ def run_dependencies(args):
) )
elif args.distribution in ZYPPER_BASED_DISTROS: elif args.distribution in ZYPPER_BASED_DISTROS:
if args.qt is None:
ZYPPER_DEPENDENCIES.extend(ZYPPER_CLIENT_GNOME_DEPENDENCIES)
else:
ZYPPER_DEPENDENCIES.extend(ZYPPER_CLIENT_QT_DEPENDENCIES)
execute_script( execute_script(
ZYPPER_INSTALL_SCRIPT, ZYPPER_INSTALL_SCRIPT,
{"packages": ' '.join(map(shlex.quote, ZYPPER_DEPENDENCIES))} {"packages": ' '.join(map(shlex.quote, ZYPPER_DEPENDENCIES))}
...@@ -352,10 +392,7 @@ def run_install(args): ...@@ -352,10 +392,7 @@ def run_install(args):
install_args += ("-c", "client-gnome") install_args += ("-c", "client-gnome")
else: else:
install_args += ("-c", "client-qt") install_args += ("-c", "client-qt")
install_args += ("-q", QT5_VERSION) install_args += ("-q", args.qtver)
if args.qt == '':
install_args += ("-Q", DEFAULT_QT_PATH)
else:
install_args += ("-Q", args.qt) install_args += ("-Q", args.qt)
return subprocess.run(["./scripts/install.sh"] + install_args, env=environ, check=True) return subprocess.run(["./scripts/install.sh"] + install_args, env=environ, check=True)
...@@ -525,7 +562,9 @@ def parse_args(): ...@@ -525,7 +562,9 @@ def parse_args():
ap.add_argument('--no-priv-install', dest='priv_install', ap.add_argument('--no-priv-install', dest='priv_install',
default=True, action='store_false') default=True, action='store_false')
ap.add_argument('--qt', nargs='?', const='', type=str, ap.add_argument('--qt', nargs='?', const='', type=str,
help='Build the Qt client with the Qt 5.15 path supplied') help='Build the Qt client with the Qt path supplied')
ap.add_argument('--qtver', default=QT5_VERSION,
help='Sets the Qt version to build with')
dist = choose_distribution() dist = choose_distribution()
if dist == WIN32_DISTRIBUTION_NAME: if dist == WIN32_DISTRIBUTION_NAME:
...@@ -533,8 +572,6 @@ def parse_args(): ...@@ -533,8 +572,6 @@ def parse_args():
help='Windows use only, specify Visual Studio toolset version') help='Windows use only, specify Visual Studio toolset version')
ap.add_argument('--sdk', default=win_sdk_default, type=str, ap.add_argument('--sdk', default=win_sdk_default, type=str,
help='Windows use only, specify Windows SDK version') help='Windows use only, specify Windows SDK version')
ap.add_argument('--qtver', default=QT5_VERSION,
help='Sets the Qt version to build with')
parsed_args = ap.parse_args() parsed_args = ap.parse_args()
......
...@@ -13,6 +13,9 @@ export OSTYPE ...@@ -13,6 +13,9 @@ export OSTYPE
set -ex set -ex
# Qt_MIN_VER required for client-qt
QT5_MIN_VER="5.14"
global=false global=false
static='' static=''
client='' client=''
...@@ -104,6 +107,33 @@ fi ...@@ -104,6 +107,33 @@ fi
make -j"${proc}" make -j"${proc}"
make_install "${global}" "${priv_install}" make_install "${global}" "${priv_install}"
# For the client-qt, verify system's version if no path provided
if [ "${client}" = "client-qt" ] && [ -z "$qt5path" ]; then
sys_qt5ver=""
if command -v qmake &> /dev/null; then
sys_qt5ver=$(qmake -v)
elif command -v qmake-qt5 &> /dev/null; then
sys_qt5ver=$(qmake-qt5 -v) # Fedora
else
echo "No valid Qt found"; exit 1;
fi
sys_qt5ver=${sys_qt5ver#*Qt version}
sys_qt5ver=${sys_qt5ver%\ in\ *}
installed_qt5ver=$(echo $sys_qt5ver| cut -d'.' -f 2)
required_qt5ver=$(echo $QT5_MIN_VER| cut -d'.' -f 2)
if [[ $installed_qt5ver -ge $required_qt5ver ]] ; then
# Disable qt5path and qt5ver in order to use system's Qt
qt5path=""
qt5ver=""
else
echo "No valid Qt found"; exit 1;
fi
fi
# libringclient # libringclient
cd "${TOP}/lrc" cd "${TOP}/lrc"
mkdir -p "${BUILDDIR}" mkdir -p "${BUILDDIR}"
...@@ -113,12 +143,12 @@ if [ "${global}" = "true" ]; then ...@@ -113,12 +143,12 @@ if [ "${global}" = "true" ]; then
cmake .. -DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}" \ cmake .. -DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}" \
-DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX="${prefix}" $static \ -DCMAKE_INSTALL_PREFIX="${prefix}" $static \
-DQT_MIN_VER="${qt5ver}" \ -DQT5_VER="${qt5ver}" \
-DQT5_PATH="${qt5path}" -DQT5_PATH="${qt5path}"
else else
cmake .. -DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}" \ cmake .. -DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}" \
-DCMAKE_BUILD_TYPE=Debug $static \ -DCMAKE_BUILD_TYPE=Debug $static \
-DQT_MIN_VER="${qt5ver}" \ -DQT5_VER="${qt5ver}" \
-DQT5_PATH="${qt5path}" -DQT5_PATH="${qt5path}"
fi fi
else else
...@@ -126,7 +156,7 @@ else ...@@ -126,7 +156,7 @@ else
-DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX="${INSTALL}/lrc" \ -DCMAKE_INSTALL_PREFIX="${INSTALL}/lrc" \
-DRING_BUILD_DIR="${DAEMON}/src" $static \ -DRING_BUILD_DIR="${DAEMON}/src" $static \
-DQT_MIN_VER="${qt5ver}" \ -DQT5_VER="${qt5ver}" \
-DQT5_PATH="${qt5path}" -DQT5_PATH="${qt5path}"
fi fi
make -j"${proc}" make -j"${proc}"
...@@ -137,23 +167,17 @@ cd "${TOP}/${client}" ...@@ -137,23 +167,17 @@ cd "${TOP}/${client}"
mkdir -p "${BUILDDIR}" mkdir -p "${BUILDDIR}"
cd "${BUILDDIR}" cd "${BUILDDIR}"
if [ "${client}" = "client-qt" ]; then if [ "${client}" = "client-qt" ]; then
echo building client-qt using Qt ${qt5ver} if [ -z ${qt5path} ]; then
if ! command -v qmake &> /dev/null; then if command -v qmake &> /dev/null; then
eval ${qt5path}/bin/qmake PREFIX="${INSTALL}/${client}" .. echo "Build client-qt with $(qmake -v)"
else
# Extract installed Qt version and compare with minimum required
sys_qt5ver=$(qmake -v)
sys_qt5ver=${sys_qt5ver#*Qt version}
sys_qt5ver=${sys_qt5ver%\ in\ *}
installed_qt5ver=$(echo $sys_qt5ver| cut -d'.' -f 2)
required_qt5ver=$(echo $qt5ver| cut -d'.' -f 2)
if [[ $installed_qt5ver -ge $required_qt5ver ]] ; then
qmake PREFIX="${INSTALL}/${client}" .. qmake PREFIX="${INSTALL}/${client}" ..
else else
eval ${qt5path}/bin/qmake PREFIX="${INSTALL}/${client}" .. echo "Build client-qt with $(qmake-qt5 -v)" # Fedora
qmake-qt5 PREFIX="${INSTALL}/${client}" ..
fi fi
else
echo "Build client-qt using Qt ${qt5path}"
eval ${qt5path}/bin/qmake PREFIX="${INSTALL}/${client}" ..
fi fi
else else
if [ "${global}" = "true" ]; then if [ "${global}" = "true" ]; then
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment