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:
Kalila 2021-03-04 17:40:54 -05:00 committed by GitHub
commit 529cf8cfc3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 200 additions and 267 deletions

View file

@ -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:

View file

@ -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

View file

@ -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!!!')

View file

@ -10,158 +10,138 @@ Note that there are patches.
## Requirements ## Requirements
### Windows ### Windows
1. Visual Studio 2019 1. Visual Studio 2019
If you dont have Community or Professional edition of Visual Studio 2019, download [Visual Studio Community 2019](https://www.visualstudio.com/downloads/). If you dont 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)

View file

@ -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

View file

@ -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