mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 09:57:26 +02:00
Merge pull request #1049 from JulianGro/qt5.15.2_linux_amd64
Update Ubuntu 18.04 amd64 Qt to 5.15.2
This commit is contained in:
commit
529cf8cfc3
6 changed files with 200 additions and 267 deletions
2
.github/workflows/master_build.yml
vendored
2
.github/workflows/master_build.yml
vendored
|
@ -35,7 +35,7 @@ jobs:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-18.04
|
- os: ubuntu-18.04
|
||||||
build_type: full
|
build_type: full
|
||||||
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
|
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 libsnappy1v5 libwebpdemux2 libwebpmux3
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: ${{matrix.os}}
|
runs-on: ${{matrix.os}}
|
||||||
steps:
|
steps:
|
||||||
|
|
2
.github/workflows/pr_build.yml
vendored
2
.github/workflows/pr_build.yml
vendored
|
@ -38,7 +38,7 @@ jobs:
|
||||||
build_type: full
|
build_type: full
|
||||||
- os: ubuntu-18.04
|
- os: ubuntu-18.04
|
||||||
build_type: full
|
build_type: full
|
||||||
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
|
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 libsnappy1v5 libwebpdemux2 libwebpmux3
|
||||||
- os: ubuntu-18.04
|
- os: ubuntu-18.04
|
||||||
build_type: android
|
build_type: android
|
||||||
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
|
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
|
||||||
|
|
|
@ -66,12 +66,8 @@ endif()
|
||||||
u_major = int( distro.major_version() )
|
u_major = int( distro.major_version() )
|
||||||
u_minor = int( distro.minor_version() )
|
u_minor = int( distro.minor_version() )
|
||||||
|
|
||||||
if u_major == 16:
|
if u_major == 18:
|
||||||
self.qtUrl = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-ubuntu-16.04-with-symbols.tar.gz'
|
self.qtUrl = self.assets_url + '/dependencies/vcpkg/qt5-install-5.15.2-ubuntu-18.04-amd64.tar.xz'
|
||||||
elif u_major == 18:
|
|
||||||
self.qtUrl = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.3-ubuntu-18.04.tar.gz'
|
|
||||||
elif u_major == 19 and u_minor == 10:
|
|
||||||
self.qtUrl = self.assets_url + '/dependencies/vcpkg/qt5-install-5.12.6-ubuntu-19.10.tar.xz'
|
|
||||||
elif u_major > 19:
|
elif u_major > 19:
|
||||||
print("We don't support " + distro.name(pretty=True) + " yet. Perhaps consider helping us out?")
|
print("We don't support " + distro.name(pretty=True) + " yet. Perhaps consider helping us out?")
|
||||||
raise Exception('LINUX DISTRO IS NOT SUPPORTED YET!!!')
|
raise Exception('LINUX DISTRO IS NOT SUPPORTED YET!!!')
|
||||||
|
|
|
@ -10,158 +10,138 @@ Note that there are patches.
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
1. Visual Studio 2019
|
1. Visual Studio 2019
|
||||||
If you don’t have Community or Professional edition of Visual Studio 2019, download [Visual Studio Community 2019](https://www.visualstudio.com/downloads/).
|
If you don’t have Community or Professional edition of Visual Studio 2019, download [Visual Studio Community 2019](https://www.visualstudio.com/downloads/).
|
||||||
Install with C++ support.
|
Install with C++ support.
|
||||||
1. python 2.7.x >= 2.7.16
|
1. python 2.7.x >= 2.7.16
|
||||||
Download MSI installer from https://www.python.org/ and add directory of the python executable to PATH.
|
Download MSI installer from https://www.python.org/ and add directory of the python executable to PATH.
|
||||||
NOTE: REMOVE python 3 from PATH. (Regular Vircadia builds use python 3, however these will still work because
|
NOTE: REMOVE python 3 from PATH. (Regular Vircadia builds use python 3, however these will still work because
|
||||||
the make files automatically handle this.)
|
the make files automatically handle this.)
|
||||||
Verify by running `python.exe --version`
|
Verify by running `python.exe --version`
|
||||||
1. git >= 1.6
|
1. git >= 1.6
|
||||||
Download from https://git-scm.com/download/win
|
Download from https://git-scm.com/download/win
|
||||||
Verify by running `git --version`
|
Verify by running `git --version`
|
||||||
1. perl >= 5.14
|
1. perl >= 5.14
|
||||||
Install from Strawberry Perl - http://strawberryperl.com/ - 5.28.1.1 64 bit to C:\Strawberry\
|
Install from Strawberry Perl - http://strawberryperl.com/ - 5.28.1.1 64 bit to C:\Strawberry\
|
||||||
Verify by running `perl --version`
|
Verify by running `perl --version`
|
||||||
1. flex and bison
|
1. flex and bison
|
||||||
These are provided as part of the Qt repository in the gnuwin32/bin folder, which is prepended to the command prompt PATH when
|
These are provided as part of the Qt repository in the gnuwin32/bin folder, which is prepended to the command prompt PATH when
|
||||||
`tq5vars.bat` is run (see below).
|
`tq5vars.bat` is run (see below).
|
||||||
Alternatively, you can download it from https://sourceforge.net/projects/winflexbison/files/latest/download and...
|
Alternatively, you can download it from https://sourceforge.net/projects/winflexbison/files/latest/download and...
|
||||||
: Uncompress in C:\flex_bison
|
: Uncompress in C:\flex_bison
|
||||||
: Rename win-bison.exe to bison.exe and win-flex.exe to flex.exe
|
: Rename win-bison.exe to bison.exe and win-flex.exe to flex.exe
|
||||||
: Add C:\flex_bison to PATH
|
: Add C:\flex_bison to PATH
|
||||||
Verify by running `flex --version`
|
Verify by running `flex --version`
|
||||||
Verify by running `bison --version`
|
Verify by running `bison --version`
|
||||||
1. gperf
|
1. gperf
|
||||||
This is provided as part of the Qt repository in the gnuwin32/bin folder, which is prepended to the command prompt PATH when
|
This is provided as part of the Qt repository in the gnuwin32/bin folder, which is prepended to the command prompt PATH when
|
||||||
`tq5vars.bat` is run (see below).
|
`tq5vars.bat` is run (see below).
|
||||||
alternatively, you can install from http://gnuwin32.sourceforge.net/downlinks/gperf.php and...
|
alternatively, you can install from http://gnuwin32.sourceforge.net/downlinks/gperf.php and...
|
||||||
: Add C:\Program Files (x86)\GnuWin32\bin to PATH
|
: Add C:\Program Files (x86)\GnuWin32\bin to PATH
|
||||||
Verify by running `gperf --version`
|
Verify by running `gperf --version`
|
||||||
1. 7-zip
|
1. 7-zip
|
||||||
Download from https://www.7-zip.org/download.html and install.
|
Download from https://www.7-zip.org/download.html and install.
|
||||||
1. Bash shell
|
1. Bash shell
|
||||||
Open Control Panel and select *Programs and Features*
|
Open Control Panel and select *Programs and Features*
|
||||||
Select *Turn Windows features on or off*
|
Select *Turn Windows features on or off*
|
||||||
Check *Windows Subsystem for Linux*
|
Check *Windows Subsystem for Linux*
|
||||||
Click *Restart now*
|
Click *Restart now*
|
||||||
Download from the Microsoft Store - Search for *bash* and choose the latest Ubuntu version
|
Download from the Microsoft Store - Search for *bash* and choose the latest Ubuntu version
|
||||||
[First run will take a few minutes]
|
[First run will take a few minutes]
|
||||||
Enter a user name - all small letters (this is used for *sudo* commands)
|
Enter a user name - all small letters (this is used for *sudo* commands)
|
||||||
Choose a password
|
Choose a password
|
||||||
1. Jom
|
1. Jom
|
||||||
jom is a clone of nmake to support the execution of multiple independent commands in parallel.
|
jom is a clone of nmake to support the execution of multiple independent commands in parallel.
|
||||||
https://wiki.qt.io/Jom
|
https://wiki.qt.io/Jom
|
||||||
Install in C:\Jom and add directory to PATH.
|
Install in C:\Jom and add directory to PATH.
|
||||||
|
|
||||||
### Linux
|
### Linux
|
||||||
**TODO: Update this section for Qt 5.15.2**
|
1. qt5 requirements
|
||||||
Tested on Ubuntu 16.04 and 18.04.
|
On Ubuntu based systems you can just have apt install the dependencies for the qt5-default package:
|
||||||
**16.04 NEEDED FOR JENKINS~~ **
|
Edit /etc/apt/sources.list (edit as root) and uncomment all source repositories by replacing all `# deb-src` with `deb-src`.
|
||||||
1. qt5 requirements
|
```bash
|
||||||
edit /etc/apt/sources.list (edit as root)
|
sudo apt update
|
||||||
replace all *# deb-src* with *deb-src* (in vi `1,$s/# deb-src/deb-src/`)
|
sudo apt upgrade
|
||||||
`sudo apt-get update -y`
|
sudo apt build-dep qt5-default
|
||||||
`sudo apt-get upgrade -y`
|
```
|
||||||
`sudo apt-get build-dep qt5-default -y`
|
|
||||||
1. git >= 1.6
|
|
||||||
Check if needed `git --version`
|
|
||||||
`sudo apt-get install git -y`
|
|
||||||
Verify again
|
|
||||||
1. python
|
|
||||||
Check if needed `python --version` - should return python 2.7.x
|
|
||||||
`sudo apt-get install python -y` (not python 3!)
|
|
||||||
Verify again
|
|
||||||
1. gperf
|
|
||||||
Check if needed `gperf --version`
|
|
||||||
`sudo apt-get install gperf -y`
|
|
||||||
Verify again
|
|
||||||
1. bison and flex
|
|
||||||
Check if needed `flex --version` and `bison --version`
|
|
||||||
`sudo apt-get install flex bison -y`
|
|
||||||
Verify again
|
|
||||||
1. pkg-config (needed for qtwebengine)
|
|
||||||
Check if needed `pkg-config --version`
|
|
||||||
`sudo apt-get install pkg-config -y`
|
|
||||||
Verify again
|
|
||||||
1. OpenGL
|
|
||||||
Verify (first install mesa-utils - `sudo apt install mesa-utils -y`) by `glxinfo | grep "OpenGL version"`
|
|
||||||
`sudo apt-get install libgl1-mesa-dev -y`
|
|
||||||
`sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0`
|
|
||||||
Verify again
|
|
||||||
1. make
|
|
||||||
Check if needed `make --version`
|
|
||||||
`sudo apt-get install make -y`
|
|
||||||
Verify again
|
|
||||||
1. g++
|
|
||||||
Check if needed
|
|
||||||
`g++ --version`
|
|
||||||
`sudo apt-get install g++ -y`
|
|
||||||
Verify again
|
|
||||||
1. dbus-1 (needed for qtwebengine)
|
|
||||||
`sudo apt-get install libdbus-glib-1-dev -y`
|
|
||||||
1. nss (needed for qtwebengine)
|
|
||||||
`sudo apt-get install libnss3-dev -y`
|
|
||||||
|
|
||||||
### Mac
|
2. git >= 1.6
|
||||||
1. git >= 1.6
|
3. python 2.7.x
|
||||||
Check if needed `git --version`
|
4. gperf
|
||||||
Install from https://git-scm.com/download/mac
|
5. bison and flex
|
||||||
Verify again
|
6. pkg-config (needed for qtwebengine)
|
||||||
1. install pkg-config, dbug-glib, and fontconfig
|
7. OpenGL
|
||||||
brew install fontconfig dbus-glib pkg-config
|
8. make
|
||||||
|
9. g++
|
||||||
|
10. dbus-1 (needed for qtwebengine)
|
||||||
|
11. nss (needed for qtwebengine)
|
||||||
|
|
||||||
|
On Ubuntu based systems you can install all these dependencies with:
|
||||||
|
```bash
|
||||||
|
sudo apt install git python gperf flex bison pkg-config mesa-utils libgl1-mesa-dev make g++ libdbus-glib-1-dev libnss3-dev
|
||||||
|
```
|
||||||
|
Make sure that python 2.7.x is the system standard by checking if `python --version` returns python 2.7.x
|
||||||
|
|
||||||
|
Qt also provides a dependency list for some major Linux distributions here: https://wiki.qt.io/Building_Qt_5_from_Git#Linux.2FX11
|
||||||
|
|
||||||
|
### Mac
|
||||||
|
1. git >= 1.6
|
||||||
|
Check if needed `git --version`
|
||||||
|
Install from https://git-scm.com/download/mac
|
||||||
|
Verify again
|
||||||
|
1. install pkg-config, dbug-glib, and fontconfig
|
||||||
|
brew install fontconfig dbus-glib pkg-config
|
||||||
|
|
||||||
|
|
||||||
## Build Process
|
## Build Process
|
||||||
|
|
||||||
|
|
||||||
### General
|
### General
|
||||||
Qt is cloned to a qt5 folder.
|
Qt is cloned to a qt5 folder.
|
||||||
The build is performed in a qt5/qt5-build folder.
|
The build is performed in a qt5/qt5-build folder.
|
||||||
Build products are installed to the qt5/qt5-install folder.
|
Build products are installed to the qt5/qt5-install folder.
|
||||||
Before running configure, make sure that the qt5-build folder is empty.
|
Before running configure, make sure that the qt5-build folder is empty.
|
||||||
|
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
Make sure that the directory you are using to build Qt is not deeply nested. It is quite possible to run into the windows MAX_PATH limit when building chromium. For example: `c:\msys64\home\ajt\code\hifi\tools\qt-builder\qt5-build` is too long. `c:\q\qt5-build\` is a better choice.
|
Make sure that the directory you are using to build Qt is not deeply nested. It is quite possible to run into the windows MAX_PATH limit when building chromium. For example: `c:\msys64\home\ajt\code\hifi\tools\qt-builder\qt5-build` is too long. `c:\q\qt5-build\` is a better choice.
|
||||||
|
|
||||||
#### Preparing OpenSSL
|
#### Preparing OpenSSL
|
||||||
|
|
||||||
Do one of the following to provide OpenSSL for building against:
|
Do one of the following to provide OpenSSL for building against:
|
||||||
a. If you have installed a local copy of Qt 5.15.2 and have built Vircadia against that, including OpenSSL, find the
|
a. If you have installed a local copy of Qt 5.15.2 and have built Vircadia against that, including OpenSSL, find the
|
||||||
**HIFI_VCPKG_BASE** subdirectory used in your build and make an environment variable **HIFI_VCPKG_BASE_DIR** point to the
|
**HIFI_VCPKG_BASE** subdirectory used in your build and make an environment variable **HIFI_VCPKG_BASE_DIR** point to the
|
||||||
*installed\x64-windows* folder.
|
*installed\x64-windows* folder.
|
||||||
a. Follow https://github.com/vircadia/vcpkg to install *vcpkg* and then *openssl*.
|
a. Follow https://github.com/vircadia/vcpkg to install *vcpkg* and then *openssl*.
|
||||||
Then make an environment variable **HIFI_VCPKG_BASE_DIR** point to the *packages\openssl-windows_x64-windows* vcpkg folder.
|
Then make an environment variable **HIFI_VCPKG_BASE_DIR** point to the *packages\openssl-windows_x64-windows* vcpkg folder.
|
||||||
|
|
||||||
#### Preparing source files
|
#### Preparing source files
|
||||||
Get the source:
|
Get the source:
|
||||||
`git clone --recursive https://code.qt.io/qt/qt5.git -b 5.15.2 --single-branch`
|
`git clone --recursive https://code.qt.io/qt/qt5.git -b 5.15.2 --single-branch`
|
||||||
|
|
||||||
Apply patches:
|
Apply patches:
|
||||||
* Copy the **patches** folder to qt5
|
* Copy the **patches** folder to qt5
|
||||||
* Apply the patches to Qt
|
* Apply the patches to Qt
|
||||||
`cd qt5`
|
`cd qt5`
|
||||||
`git apply --ignore-space-change --ignore-whitespace patches/win-qtwebengine.diff`
|
`git apply --ignore-space-change --ignore-whitespace patches/win-qtwebengine.diff`
|
||||||
`cd ..`
|
`cd ..`
|
||||||
|
|
||||||
Set up configuration batch file:
|
Set up configuration batch file:
|
||||||
* Copy the **qt5vars.bat** file to qt5.
|
* Copy the **qt5vars.bat** file to qt5.
|
||||||
* Edit the **qt5vars.bat** file per the instructions in it.
|
* Edit the **qt5vars.bat** file per the instructions in it.
|
||||||
|
|
||||||
#### Configuring
|
#### Configuring
|
||||||
|
|
||||||
Do the following in a Visual Studio 2019 Command Prompt window.
|
Do the following in a Visual Studio 2019 Command Prompt window.
|
||||||
|
|
||||||
Set up the build directories:
|
Set up the build directories:
|
||||||
`cd qt5`
|
`cd qt5`
|
||||||
`mkdir qt5-build`
|
`mkdir qt5-build`
|
||||||
`mkdir qt5-install`
|
`mkdir qt5-install`
|
||||||
`cd qt5-build`
|
`cd qt5-build`
|
||||||
|
|
||||||
Set up the environment variables:
|
Set up the environment variables:
|
||||||
`..\qt5vars`
|
`..\qt5vars`
|
||||||
|
|
||||||
Note: If you need to rebuild, wipe the *qt5-build* and *qt5-install* directories and re-run `qt5vars`.
|
Note: If you need to rebuild, wipe the *qt5-build* and *qt5-install* directories and re-run `qt5vars`.
|
||||||
|
|
||||||
|
@ -169,152 +149,165 @@ Configure the Qt build:
|
||||||
|
|
||||||
`..\configure -force-debug-info -opensource -confirm-license -opengl desktop -platform win32-msvc -openssl-linked -I %HIFI_VCPKG_BASE_DIR%\include -L %HIFI_VCPKG_BASE_DIR%\lib OPENSSL_LIBS="-llibcrypto -llibssl" -nomake examples -nomake tests -skip qttranslations -skip qtserialport -skip qt3d -skip qtlocation -skip qtwayland -skip qtsensors -skip qtgamepad -skip qtcharts -skip qtx11extras -skip qtmacextras -skip qtvirtualkeyboard -skip qtpurchasing -skip qtdatavis3d -no-warnings-are-errors -no-pch -prefix ..\qt5-install`
|
`..\configure -force-debug-info -opensource -confirm-license -opengl desktop -platform win32-msvc -openssl-linked -I %HIFI_VCPKG_BASE_DIR%\include -L %HIFI_VCPKG_BASE_DIR%\lib OPENSSL_LIBS="-llibcrypto -llibssl" -nomake examples -nomake tests -skip qttranslations -skip qtserialport -skip qt3d -skip qtlocation -skip qtwayland -skip qtsensors -skip qtgamepad -skip qtcharts -skip qtx11extras -skip qtmacextras -skip qtvirtualkeyboard -skip qtpurchasing -skip qtdatavis3d -no-warnings-are-errors -no-pch -prefix ..\qt5-install`
|
||||||
|
|
||||||
Copy the files *zlib1.dll* and *zlib.pdb* from the %HIFI_VCPKG_BASE_DIR%\bin directory to *qt5-build\qtbase\bin* (which is on
|
Copy the files *zlib1.dll* and *zlib.pdb* from the %HIFI_VCPKG_BASE_DIR%\bin directory to *qt5-build\qtbase\bin* (which is on
|
||||||
the PATH used by the `jom` command).
|
the PATH used by the `jom` command).
|
||||||
FIXME: Why aren't these zlib files automatically provided / found for use by rcc.exe?
|
FIXME: Why aren't these zlib files automatically provided / found for use by rcc.exe?
|
||||||
|
|
||||||
#### Make
|
#### Make
|
||||||
|
|
||||||
Build Qt:
|
Build Qt:
|
||||||
`jom`
|
`jom`
|
||||||
`jom install`
|
`jom install`
|
||||||
|
|
||||||
#### Fixing
|
#### Fixing
|
||||||
|
|
||||||
The *.prl* files have an absolute path that needs to be removed (see http://www.linuxfromscratch.org/blfs/view/stable-systemd/x/qtwebengine.html)
|
The *.prl* files have an absolute path that needs to be removed (see http://www.linuxfromscratch.org/blfs/view/stable-systemd/x/qtwebengine.html)
|
||||||
1. `cd` to the *qt5-install* folder.
|
1. `cd` to the *qt5-install* folder.
|
||||||
1. Open a bash terminal. (Run `bash` in command prompt.)
|
1. Open a bash terminal. (Run `bash` in command prompt.)
|
||||||
1. Run the following command:
|
1. Run the following command:
|
||||||
`find . -name \*.prl -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;`
|
`find . -name \*.prl -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;`
|
||||||
|
|
||||||
Add a *qt.conf* file.
|
Add a *qt.conf* file.
|
||||||
1. Copy the file *qt5-build\qtbase\bin\qt.conf* to *qt5-install\bin*.
|
1. Copy the file *qt5-build\qtbase\bin\qt.conf* to *qt5-install\bin*.
|
||||||
1. Edit the *qt.conf* file: replace all absolute URLs with relative URLs.
|
1. Edit the *qt.conf* file: replace all absolute URLs with relative URLs.
|
||||||
|
|
||||||
Copy the files *zlib1.dll* and *zlib.pdb* from *qt5-build\qtbase\bin* to *qt5-install\bin*.
|
Copy the files *zlib1.dll* and *zlib.pdb* from *qt5-build\qtbase\bin* to *qt5-install\bin*.
|
||||||
FIXME: Why aren't these zlib files automatically included?
|
FIXME: Why aren't these zlib files automatically included?
|
||||||
|
|
||||||
|
|
||||||
#### Uploading
|
#### Uploading
|
||||||
|
|
||||||
Create a Gzip tar file called qt5-install-5.15.2-windows.tar.gz from the qt5-install folder.
|
Create a Gzip tar file called qt5-install-5.15.2-windows.tar.gz from the qt5-install folder.
|
||||||
|
|
||||||
Using 7-Zip:
|
Using 7-Zip:
|
||||||
* `cd` to the *qt5* folder.
|
* `cd` to the *qt5* folder.
|
||||||
* `7z a -ttar qt5-install-5.15.2-windows.tar qt5-install`
|
* `7z a -ttar qt5-install-5.15.2-windows.tar qt5-install`
|
||||||
* `7z a -tgzip qt5-install-5.15.2-windows.tar.gz qt5-install-5.15.2-windows.tar`
|
* `7z a -tgzip qt5-install-5.15.2-windows.tar.gz qt5-install-5.15.2-windows.tar`
|
||||||
|
|
||||||
Upload qt5-install-5.15.2-windows.tar.gz to the Amazon S3 vircadia-public bucket, under the dependencies/vckpg directory.
|
Upload qt5-install-5.15.2-windows.tar.gz to the Amazon S3 vircadia-public bucket, under the dependencies/vckpg directory.
|
||||||
Update hifi_vcpkg.py to use this new URL. Additionally, you should make a small change to any file in the vircadia/cmake/ports
|
Update hifi_vcpkg.py to use this new URL. Additionally, you should make a small change to any file in the vircadia/cmake/ports
|
||||||
directory to force the re-download of the qt-install.tar.gz during the build process for Vircadia.
|
directory to force the re-download of the qt-install.tar.gz during the build process for Vircadia.
|
||||||
|
|
||||||
#### Preparing Symbols
|
#### Preparing Symbols
|
||||||
|
|
||||||
Using Python 3, Run the following command in the *qt5* folder, substituting in paths as required. The
|
Using Python 3, Run the following command in the *qt5* folder, substituting in paths as required. The
|
||||||
*prepare-windows-symbols-for-backtrace.py* file is in the Vircadia repository's *tools\qt-builder* folder.
|
*prepare-windows-symbols-for-backtrace.py* file is in the Vircadia repository's *tools\qt-builder* folder.
|
||||||
`<path>python <path>prepare-windows-symbols-for-backtrace.py qt5-install`
|
`<path>python <path>prepare-windows-symbols-for-backtrace.py qt5-install`
|
||||||
|
|
||||||
This scans the qt5-install directory for dlls and pdbs, and copies them to a *backtrace* directory.
|
This scans the qt5-install directory for dlls and pdbs, and copies them to a *backtrace* directory.
|
||||||
Check that all dlls and pdbs are in the root of the directory.
|
Check that all dlls and pdbs are in the root of the directory.
|
||||||
|
|
||||||
Zip up this directory and upload it to Backtrace or other crash log handlng tool.
|
Zip up this directory and upload it to Backtrace or other crash log handlng tool.
|
||||||
|
|
||||||
|
|
||||||
### Linux
|
### Linux
|
||||||
**TODO: Update this section for Qt 5.15.2**
|
|
||||||
|
|
||||||
#### Preparing source files
|
#### Preparing source files
|
||||||
`git clone --recursive git://code.qt.io/qt/qt5.git -b 5.12.3 --single-branch`
|
```bash
|
||||||
|
git clone --recursive git://code.qt.io/qt/qt5.git -b 5.15.2 --single-branch
|
||||||
* Copy the **patches** folder to qt5
|
```
|
||||||
* Apply patches to Qt
|
|
||||||
`cd qt5`
|
|
||||||
`git apply --ignore-space-change --ignore-whitespace patches/aec.patch`
|
|
||||||
`git apply --ignore-space-change --ignore-whitespace patches/qtscript-crash-fix.patch`
|
|
||||||
`cd ..`
|
|
||||||
|
|
||||||
#### Configuring
|
#### Configuring
|
||||||
`mkdir qt5-install`
|
```bash
|
||||||
`mkdir qt5-build`
|
mkdir qt5-install
|
||||||
`cd qt5-build`
|
mkdir qt5-build
|
||||||
|
cd qt5-build
|
||||||
|
```
|
||||||
|
|
||||||
*Ubuntu 16.04*
|
amd64:
|
||||||
`../qt5/configure -opensource -confirm-license -platform linux-g++-64 -qt-zlib -qt-libjpeg -qt-libpng -qt-xcb -qt-freetype -qt-pcre -qt-harfbuzz -nomake examples -nomake tests -skip qttranslations -skip qtserialport -skip qt3d -skip qtlocation -skip qtwayland -skip qtsensors -skip qtgamepad -skip qtspeech -skip qtcharts -skip qtmacextras -skip qtvirtualkeyboard -skip qtpurchasing -skip qtdatavis3d -no-warnings-are-errors -no-pch -no-egl -no-icu -prefix ../qt5-install`
|
```bash
|
||||||
**TODO: Remove `-skip qtspeech`**
|
../qt5/configure -force-debug-info -release -opensource -confirm-license -platform linux-g++-64 -recheck-all -nomake tests -nomake examples -skip qttranslations -skip qtserialport -skip qt3d -skip qtlocation -skip qtwayland -skip qtsensors -skip qtgamepad -skip qtcharts -skip qtx11extras -skip qtmacextras -skip qtvirtualkeyboard -skip qtpurchasing -skip qtdatavis3d -skip qtlottie -skip qtquick3d -skip qtpim -skip qtdocgallery -no-warnings-are-errors -no-pch -no-egl -no-icu -prefix ../qt5-install
|
||||||
|
```
|
||||||
|
If libX11 or libGL aren't found, you will need to manually provide those locations. Search for `libX11.so` and `libGL.so` respectively and provide paths to their folders inside `qt5/qtbase/mkdspecs/linux-g++-64/qmake.conf`.
|
||||||
|
On Ubuntu 18.04 both are in `/usr/lib/x86_64-linux-gnu`
|
||||||
|
|
||||||
*Ubuntu 18.04*
|
aarch64:
|
||||||
`../qt5/configure -force-debug-info -release -opensource -confirm-license -gdb-index -recheck-all -nomake tests -nomake examples -skip qttranslations -skip qtserialport -skip qt3d -skip qtlocation -skip qtwayland -skip qtsensors -skip qtgamepad -skip qtspeech -skip qtcharts -skip qtx11extras -skip qtmacextras -skip qtvirtualkeyboard -skip qtpurchasing -skip qtdatavis3d -no-warnings-are-errors -no-pch -c++std c++14 -prefix ../qt5-install`
|
```bash
|
||||||
**TODO: Remove `-skip qtspeech`**
|
../qt5/configure -force-debug-info -release -opensource -confirm-license -platform linux-g++ -recheck-all -nomake tests -nomake examples -skip qttranslations -skip qtserialport -skip qt3d -skip qtlocation -skip qtwayland -skip qtsensors -skip qtgamepad -skip qtcharts -skip qtx11extras -skip qtmacextras -skip qtvirtualkeyboard -skip qtpurchasing -skip qtdatavis3d -skip qtlottie -skip qtquick3d -skip qtpim -skip qtdocgallery -no-warnings-are-errors -no-pch -no-icu -prefix ../qt5-install
|
||||||
|
```
|
||||||
|
You can accelerate the build process by installing some of the optional system dependencies.
|
||||||
|
|
||||||
|
#### Make
|
||||||
|
Replace `4` with the number of threads you want to use. Keep in mind that the Qt build process uses a lot of memory. It is recommended to have at least 1.2 GiB per thread.
|
||||||
|
```bash
|
||||||
|
NINJAFLAGS='-j4' make -j4
|
||||||
|
```
|
||||||
|
|
||||||
???`../qt5/configure -opensource -confirm-license -gdb-index -nomake examples -nomake tests -skip qttranslations -skip qtserialport -skip qt3d -skip qtlocation -skip qtwayland -skip qtsensors -skip qtgamepad -skip qtspeech -skip qtcharts -skip qtmacextras -skip qtvirtualkeyboard -skip qtpurchasing -skip qtdatavis3d -no-warnings-are-errors -no-pch -prefix ../qt5-install`
|
On some systems qtscript, qtwebengine, qtwebchannel and qtspeech will be build by `make` without you manually specifying it, while others require you to build modules individually.
|
||||||
|
Check the folders of each needed module for binary files, to make sure that they have actually been built.
|
||||||
|
If a module has not been built, make the module "manually":
|
||||||
|
```bash
|
||||||
|
make -j4 module-qtscript
|
||||||
|
NINJAFLAGS='-j4' make -j4 module-qtwebengine
|
||||||
|
make -j4 module-qtspeech
|
||||||
|
make -j4 module-qtwebchannel
|
||||||
|
```
|
||||||
|
|
||||||
#### Make
|
Now Qt can be installed to qt5-install:
|
||||||
`make`
|
```bash
|
||||||
|
make -j4 install
|
||||||
|
```
|
||||||
|
|
||||||
????*Ubuntu 18.04 only*
|
If some modules were missing in previous steps, it is needed to install them individually as well:
|
||||||
????`make module-qtwebengine`
|
```bash
|
||||||
????`make module-qtscript`
|
cd qtwebengine
|
||||||
|
make -j4 install
|
||||||
*Both*
|
cd ../qtscript
|
||||||
`make install`
|
make -j4 install
|
||||||
|
cd ../qtspeech
|
||||||
|
make -j4 install
|
||||||
|
cd ../qtwebchannel
|
||||||
|
make -j4 install
|
||||||
|
```
|
||||||
|
If one of the make commands fails, running it a second time sometimes clears the issue.
|
||||||
|
|
||||||
#### Fixing
|
#### Fixing
|
||||||
1. The *.prl* files have an absolute path that needs to be removed (see http://www.linuxfromscratch.org/blfs/view/stable-systemd/x/qtwebengine.html)
|
1. The *.prl* files have an absolute path that needs to be removed (see http://www.linuxfromscratch.org/blfs/view/stable-systemd/x/qtwebengine.html)
|
||||||
`cd ../qt5-install`
|
```bash
|
||||||
`find . -name \*.prl -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;`
|
cd ../qt5-install
|
||||||
1. Copy *qt.conf* to *qt5-install\bin*
|
find . -name \*.prl -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
|
||||||
|
```
|
||||||
|
2. Copy *qt.conf* to *qt5-install\bin*
|
||||||
|
|
||||||
#### Uploading
|
#### Uploading
|
||||||
*Ubuntu 16.04*
|
1. Tar and xz qt5-install to create the package. Replace `ubuntu-18.04` with the relevant system and `amd64` with the relevant architecture.
|
||||||
1. Return to the home folder
|
```bash
|
||||||
`cd ..`
|
tar -Jcvf qt5-install-5.15.2-ubuntu-18.04-amd64.tar.xz qt5-install
|
||||||
1. Open a python 3 shell
|
```
|
||||||
`python3`
|
2. Upload qt5-install-5.15.2-ubuntu-18.04-amd64.tar.xz to https://athena-public.s3.amazonaws.com/dependencies/vcpkg/
|
||||||
1. Run the following snippet:
|
|
||||||
`import os`
|
|
||||||
`import tarfile`
|
|
||||||
`filename=tarfile.open("qt5-install.tar.gz", "w:gz")`
|
|
||||||
`filename.add("qt5-install", os.path.basename("qt5-install"))`
|
|
||||||
`exit()`
|
|
||||||
1. Upload qt5-install.tar.gz to https://hifi-qa.s3.amazonaws.com/qt5/Ubuntu/16.04
|
|
||||||
|
|
||||||
*Ubuntu 18.04*
|
|
||||||
``tar -zcvf qt5-install.tar.gz qt5-install`
|
|
||||||
1. Upload qt5-install.tar.gz to https://hifi-qa.s3.amazonaws.com/qt5/Ubuntu/18.04
|
|
||||||
|
|
||||||
|
|
||||||
### Mac
|
|
||||||
|
|
||||||
#### Preparing source files
|
### Mac
|
||||||
git clone --recursive git://code.qt.io/qt/qt5.git -b 5.15.2 --single-branch
|
|
||||||
|
#### Preparing source files
|
||||||
|
git clone --recursive git://code.qt.io/qt/qt5.git -b 5.15.2 --single-branch
|
||||||
|
|
||||||
* If you are compiling with MacOSX11.1.SDK or greater, edit qt5/qtwebengine/src/3rdparty/chromium/build/mac/find_sdk.py line 91 and replace "MacOSX(10" with "MacOSX(11".
|
* If you are compiling with MacOSX11.1.SDK or greater, edit qt5/qtwebengine/src/3rdparty/chromium/build/mac/find_sdk.py line 91 and replace "MacOSX(10" with "MacOSX(11".
|
||||||
|
|
||||||
#### Configuring
|
#### Configuring
|
||||||
`mkdir qt5-install`
|
`mkdir qt5-install`
|
||||||
`mkdir qt5-build`
|
`mkdir qt5-build`
|
||||||
`cd ../qt5-build`
|
`cd ../qt5-build`
|
||||||
|
|
||||||
`../configure -force-debug-info -opensource -confirm-license -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -qt-pcre -qt-harfbuzz -nomake examples -nomake tests -skip qttranslations -skip qtserialport -skip qt3d -skip qtlocation -skip qtwayland -skip qtsensors -skip qtgamepad -skip qtcharts -skip qtx11extras -skip qtmacextras -skip qtvirtualkeyboard -skip qtpurchasing -skip qtdatavis3d -no-warnings-are-errors -no-pch -prefix ../qt5-install`
|
`../configure -force-debug-info -opensource -confirm-license -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -qt-pcre -qt-harfbuzz -nomake examples -nomake tests -skip qttranslations -skip qtserialport -skip qt3d -skip qtlocation -skip qtwayland -skip qtsensors -skip qtgamepad -skip qtcharts -skip qtx11extras -skip qtmacextras -skip qtvirtualkeyboard -skip qtpurchasing -skip qtdatavis3d -no-warnings-are-errors -no-pch -prefix ../qt5-install`
|
||||||
|
|
||||||
#### Make
|
#### Make
|
||||||
`make`
|
`make`
|
||||||
`make install`
|
`make install`
|
||||||
|
|
||||||
#### Fixing
|
#### Fixing
|
||||||
1. The *.prl* files have an absolute path that needs to be removed (see http://www.linuxfromscratch.org/blfs/view/stable-systemd/x/qtwebengine.html)
|
1. The *.prl* files have an absolute path that needs to be removed (see http://www.linuxfromscratch.org/blfs/view/stable-systemd/x/qtwebengine.html)
|
||||||
`cd` to the `qt5-install directory`
|
`cd` to the `qt5-install directory`
|
||||||
`find . -name \*.prl -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;`
|
`find . -name \*.prl -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;`
|
||||||
`cd ..`
|
`cd ..`
|
||||||
1. Note: you may have additional files in qt5-install/lib and qt5-install/lib/pkg/pkgconfig that have your local build absolute path included. Optionally you can fix these as well, but it will not effect the build if left alone.
|
1. Note: you may have additional files in qt5-install/lib and qt5-install/lib/pkg/pkgconfig that have your local build absolute path included. Optionally you can fix these as well, but it will not effect the build if left alone.
|
||||||
|
|
||||||
Add a *qt.conf* file.
|
Add a *qt.conf* file.
|
||||||
1. Copy the file *qt5-build\qtbase\bin\qt.conf* to *qt5-install\bin*
|
1. Copy the file *qt5-build\qtbase\bin\qt.conf* to *qt5-install\bin*
|
||||||
1. Edit the *qt.conf* file: replace all absolute URLs with relative URLs (beginning with .. or .)
|
1. Edit the *qt.conf* file: replace all absolute URLs with relative URLs (beginning with .. or .)
|
||||||
|
|
||||||
#### Uploading
|
#### Uploading
|
||||||
`tar -zcvf qt5-install-5.15.2-macos.tar.gz qt5-install`
|
`tar -zcvf qt5-install-5.15.2-macos.tar.gz qt5-install`
|
||||||
Upload qt5-install-5.15.2-macos.tar.gz to our Amazon S3 vircadia-public bucket, under the dependencies/vckpg directory
|
Upload qt5-install-5.15.2-macos.tar.gz to our Amazon S3 vircadia-public bucket, under the dependencies/vckpg directory
|
||||||
|
|
||||||
#### Creating symbols (optional)
|
#### Creating symbols (optional)
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
diff --git a/qtmultimedia/src/plugins/opensles/qopenslesaudioinput.cpp b/qtmultimedia/src/plugins/opensles/qopenslesaudioinput.cpp
|
|
||||||
index ad87cb0..54ed18a 100644
|
|
||||||
--- a/qtmultimedia/src/plugins/opensles/qopenslesaudioinput.cpp
|
|
||||||
+++ b/qtmultimedia/src/plugins/opensles/qopenslesaudioinput.cpp
|
|
||||||
@@ -117,6 +117,8 @@ QOpenSLESAudioInput::QOpenSLESAudioInput(const QByteArray &device)
|
|
||||||
m_recorderPreset = SL_ANDROID_RECORDING_PRESET_CAMCORDER;
|
|
||||||
else if (qstrcmp(device, QT_ANDROID_PRESET_VOICE_RECOGNITION) == 0)
|
|
||||||
m_recorderPreset = SL_ANDROID_RECORDING_PRESET_VOICE_RECOGNITION;
|
|
||||||
+ else if (qstrcmp(device, QT_ANDROID_PRESET_VOICE_COMMUNICATION) == 0)
|
|
||||||
+ m_recorderPreset = SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION;
|
|
||||||
else
|
|
||||||
m_recorderPreset = SL_ANDROID_RECORDING_PRESET_GENERIC;
|
|
||||||
#endif
|
|
||||||
diff --git a/qtmultimedia/src/plugins/opensles/qopenslesaudioinput.h b/qtmultimedia/src/plugins/opensles/qopenslesaudioinput.h
|
|
||||||
index ad84db0..35cc379 100644
|
|
||||||
--- a/qtmultimedia/src/plugins/opensles/qopenslesaudioinput.h
|
|
||||||
+++ b/qtmultimedia/src/plugins/opensles/qopenslesaudioinput.h
|
|
||||||
@@ -50,6 +50,7 @@
|
|
||||||
#define QT_ANDROID_PRESET_MIC "mic"
|
|
||||||
#define QT_ANDROID_PRESET_CAMCORDER "camcorder"
|
|
||||||
#define QT_ANDROID_PRESET_VOICE_RECOGNITION "voicerecognition"
|
|
||||||
+#define QT_ANDROID_PRESET_VOICE_COMMUNICATION "voicecommunication"
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
diff --git a/qtmultimedia/src/plugins/opensles/qopenslesengine.cpp b/qtmultimedia/src/plugins/opensles/qopenslesengine.cpp
|
|
||||||
index 1a16cc2..2577fb3 100644
|
|
||||||
--- a/qtmultimedia/src/plugins/opensles/qopenslesengine.cpp
|
|
||||||
+++ b/qtmultimedia/src/plugins/opensles/qopenslesengine.cpp
|
|
||||||
@@ -114,7 +114,8 @@ QList<QByteArray> QOpenSLESEngine::availableDevices(QAudio::Mode mode) const
|
|
||||||
#ifdef ANDROID
|
|
||||||
devices << QT_ANDROID_PRESET_MIC
|
|
||||||
<< QT_ANDROID_PRESET_CAMCORDER
|
|
||||||
- << QT_ANDROID_PRESET_VOICE_RECOGNITION;
|
|
||||||
+ << QT_ANDROID_PRESET_VOICE_RECOGNITION
|
|
||||||
+ << QT_ANDROID_PRESET_VOICE_COMMUNICATION;
|
|
||||||
#else
|
|
||||||
devices << "default";
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
diff --git a/qtscript/src/script/api/qscriptengine.cpp b/qtscript/src/script/api/qscriptengine.cpp
|
|
||||||
index c5f437b..942833e 100644
|
|
||||||
--- a/qtscript/src/script/api/qscriptengine.cpp
|
|
||||||
+++ b/qtscript/src/script/api/qscriptengine.cpp
|
|
||||||
@@ -1332,8 +1332,10 @@ void QScriptEnginePrivate::collectGarbage()
|
|
||||||
|
|
||||||
void QScriptEnginePrivate::reportAdditionalMemoryCost(int size)
|
|
||||||
{
|
|
||||||
- if (size > 0)
|
|
||||||
+ if (size > 0) {
|
|
||||||
+ QScript::APIShim shim(this);
|
|
||||||
globalData->heap.reportExtraMemoryCost(size);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
QScript::TimeoutCheckerProxy *QScriptEnginePrivate::timeoutChecker() const
|
|
Loading…
Reference in a new issue