|
1 | | -# Building Open RV on Rocky 8 |
| 1 | +# Building OpenRV on Rocky Linux 8.7 |
2 | 2 |
|
3 | | -## Summary |
| 3 | +## Manual Build |
4 | 4 |
|
5 | | -1. [Install Basics](#install-basics) |
6 | | -1. [Install tools and build dependencies](#install-tools-and-build-dependencies) |
7 | | -1. [Install CMake](#install-cmake) |
8 | | -1. [Install Qt5](#install-qt) |
| 5 | +1. [Install Dependencies](#install-dependencies) |
| 6 | +2. [Install Qt5](#install-qt5) |
| 7 | +3. [Build and Install OpenRV](#build-and-install-openrv) |
9 | 8 |
|
10 | | -## Install Basics |
| 9 | +### Install Dependencies |
11 | 10 |
|
12 | 11 | Make sure we have some basic tools available on the workstation: |
13 | 12 |
|
14 | | -```bash |
15 | | -sudo dnf install wget git |
| 13 | +```shell |
| 14 | +sudo dnf install wget git cmake |
16 | 15 | ``` |
17 | 16 |
|
18 | | -## Install tools and build dependencies |
19 | | - |
20 | 17 | Some of the build dependencies come from outside the main AppStream repo. So first we will enable those and then install our dependencies: |
21 | 18 |
|
22 | | -```bash |
| 19 | +```shell |
23 | 20 | sudo dnf install epel-release |
24 | | -sudo dnf config-manager --set-enabled crb devel |
25 | | -sudo dnf install alsa-lib-devel autoconf automake avahi-compat-libdns_sd-devel bison bzip2-devel cmake-gui curl-devel flex gcc gcc-c++ libXcomposite libXi-devel libaio-devel libffi-devel nasm ncurses-devel nss libtool libxkbcommon libXcomposite libXdamage libXrandr libXtst libXcursor mesa-libOSMesa mesa-libOSMesa-devel meson ninja-build openssl-devel patch pulseaudio-libs pulseaudio-libs-glib2 ocl-icd ocl-icd-devel opencl-headers python3 python3-devel qt5-qtbase-devel readline-devel sqlite-devel tcl-devel tcsh tk-devel yasm zip zlib-devel |
| 21 | +sudo dnf config-manager --set-enabled powertools |
| 22 | +sudo dnf install alsa-lib-devel autoconf automake avahi-compat-libdns_sd-devel bison bzip2-devel cmake-gui curl-devel flex gcc gcc-c++ libXcomposite libXi-devel libaio-devel libffi-devel nasm ncurses-devel nss libtool libxkbcommon libXcomposite libXdamage libXrandr libXtst libXcursor mesa-libOSMesa mesa-libOSMesa-devel meson ninja-build openssl-devel patch pulseaudio-libs pulseaudio-libs-glib2 ocl-icd ocl-icd-devel opencl-headers python3 python3-devel readline-devel sqlite-devel tcl-devel tcsh tk-devel yasm zip zlib-devel |
26 | 23 | ``` |
27 | 24 |
|
28 | | -You can disable the devel repo afterwards since dnf will warn about it: |
29 | | -```bash |
30 | | -sudo dnf config-manager --set-disabled devel |
| 25 | +You may or may not have libGLU on your system depending on your graphics driver setup. To know you can check if you have the lib /usr/lib64/libGLU.so.1. If it's there you can skip this step, there's nothing further to do in this section. If not, you can install the graphics drivers for your system. As as last resort, you can install a software (mesa) libGLU version, but you may not have ideal performance with this option. To do so: |
| 26 | + |
| 27 | +```shell |
| 28 | +sudo dnf install mesa-libGLU mesa-libGLU-devel |
31 | 29 | ``` |
32 | 30 |
|
33 | | -### GLU |
| 31 | +Ensure that your `python3` packages are installed and up to date: |
| 32 | +```shell |
| 33 | +dnf install -y python3-setuptools |
| 34 | +python3 -m pip install --upgrade pip setuptools wheel |
| 35 | +``` |
34 | 36 |
|
35 | | -You may or may not have libGLU on your system depending on your graphics driver setup. To know you can check if you have the lib /usr/lib64/libGLU.so.1. If it's there you can skip this step, there's nothing further to do in this section. If not, you can install the graphics drivers for your system. As as last resort, you can install a software (mesa) libGLU version, but you may not have ideal performance with this option. To do so: |
| 37 | +Ensure that you have a symlink to `python3` at `/usr/bin/python`. |
| 38 | +```shell |
| 39 | +ln -sf /usr/bin/python3 /usr/bin/python |
| 40 | +``` |
36 | 41 |
|
37 | | -```bash |
38 | | -sudo dnf install mesa-libGLU mesa-libGLU-devel |
| 42 | +### Install Qt5 |
| 43 | + |
| 44 | +Download the last version of Qt 5.15.x that you can get using the online installer on the [Qt page](https://www.qt.io/download-open-source). Logs, Android, iOS and WebAssembly are not required to build OpenRV. |
| 45 | + |
| 46 | +WARNING: If you fetch Qt from another source, make sure to build it with SSL support, that it contains everything required to build PySide2, and that the file structure is similar to the official package. |
| 47 | + |
| 48 | +```shell |
| 49 | +./qt-unified-linux-x64-4.6.1-online.run --email "<email>" --password "<password>" --platform minimal --confirm-command --accept-licenses --accept-obligations --accept-messages install qt.qt5.5152.qtpdf qt.qt5.5152.qtpurchasing qt.qt5.5152.qtvirtualkeyboard qt.qt5.5152.qtquicktimeline qt.qt5.5152.qtlottie qt.qt5.5152.debug_info qt.qt5.5152.qtscript qt.qt5.5152.qtcharts qt.qt5.5152.qtwebengine qt.qt5.5152.qtwebglplugin qt.qt5.5152.qtnetworkauth qt.qt5.5152.qtwaylandcompositor qt.qt5.5152.qtdatavis3d qt.qt5.5152.logs qt.qt5.5152 qt.qt5.5152.src qt.qt5.5152.gcc_64 qt.qt5.5152.qtquick3d |
39 | 50 | ``` |
40 | 51 |
|
41 | | -### Install the python requirements |
| 52 | +### Build and Install OpenRV |
42 | 53 |
|
43 | | -Some of the RV build scripts requires extra python packages. They can be installed using the requirements.txt at the root of the repository. |
| 54 | +Get the repository: |
| 55 | +```shell |
| 56 | +git clone --recursive https://github.com/AcademySoftwareFoundation/OpenRV.git |
| 57 | +``` |
44 | 58 |
|
45 | | -```bash |
| 59 | +Some of the RV build scripts requires extra python packages. |
| 60 | +They can be installed using the requirements.txt at the root of the repository. |
| 61 | +```shell |
46 | 62 | python3 -m pip install -r requirements.txt |
47 | 63 | ``` |
48 | 64 |
|
49 | | -## Install CMake |
50 | | - |
51 | | -You need CMake version 3.24+ to build RV. The dnf-installable version is not quite recent enough, you'll to build and install CMake from sources. |
| 65 | +Set the QT_HOME to the install location, build and install: |
| 66 | +```shell |
| 67 | +export QT_HOME=/opt/Qt/5.15.2/gcc_64 |
| 68 | +source rvcmds.sh |
| 69 | +rvbootstrap |
| 70 | +rvinst |
| 71 | +``` |
52 | 72 |
|
53 | | -```bash |
54 | | -wget https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0.tar.gz |
55 | | -tar -zxvf cmake-3.24.0.tar.gz |
56 | | -cd cmake-3.24.0 |
57 | | -./bootstrap --parallel=32 # 32 or whatever your machine allows |
58 | | -make -j 32 # 32 or whatever your machine allows |
59 | | -sudo make install |
60 | | - |
61 | | -cmake --version # confirm the version of your newly installed version of CMake |
62 | | -cmake version 3.24.0 |
| 73 | +## Docker Build |
| 74 | + |
| 75 | +OpenRV can also be built inside a Docker Container. |
| 76 | + |
| 77 | +1. [Build the Image](#build-the-image) |
| 78 | +2. [Extract the Installation Files](#extract-the-installation-files) |
| 79 | +3. [Cleanup](#cleanup) |
| 80 | + |
| 81 | +### Build the Image |
| 82 | + |
| 83 | +Here's a `Dockerfile` that installs all dependencies, builds and installs OpenRV from source. |
| 84 | +> Note: You will need an email and password for Qt and you might have to update the url to the Qt5 online installer. |
| 85 | +
|
| 86 | +```dockerfile |
| 87 | +FROM rockylinux:8.7 |
| 88 | + |
| 89 | +# Install dependencies |
| 90 | +RUN dnf install -y epel-release |
| 91 | +RUN dnf config-manager --set-enabled powertools |
| 92 | +RUN dnf install -y alsa-lib-devel autoconf automake avahi-compat-libdns_sd-devel bison \ |
| 93 | + bzip2-devel cmake-gui curl-devel flex gcc gcc-c++ libXcomposite libXi-devel \ |
| 94 | + libaio-devel libffi-devel nasm ncurses-devel nss libtool libxkbcommon libXcomposite \ |
| 95 | + libXdamage libXrandr libXtst libXcursor mesa-libOSMesa mesa-libOSMesa-devel meson \ |
| 96 | + ninja-build openssl-devel patch pulseaudio-libs pulseaudio-libs-glib2 ocl-icd \ |
| 97 | + ocl-icd-devel opencl-headers qt5-qtbase-devel readline-devel \ |
| 98 | + sqlite-devel tcl-devel tcsh tk-devel yasm zip zlib-devel |
| 99 | +RUN dnf install -y mesa-libGLU mesa-libGLU-devel |
| 100 | +RUN dnf install -y cmake git wget |
| 101 | + |
| 102 | +# Note: /usr/bin/python needs to exist for OpenRV to build correctly. |
| 103 | +RUN dnf install -y python3-setuptools && \ |
| 104 | + python3 -m pip install --upgrade pip setuptools wheel && \ |
| 105 | + ln -sf /usr/bin/python3 /usr/bin/python |
| 106 | + |
| 107 | +# Install Qt5 |
| 108 | +ARG QT_EMAIL |
| 109 | +ARG QT_PASSWORD |
| 110 | +RUN wget https://d13lb3tujbc8s0.cloudfront.net/onlineinstallers/qt-unified-linux-x64-4.6.1-online.run && \ |
| 111 | + chmod a+x qt-unified-linux-x64-4.6.1-online.run && \ |
| 112 | + ./qt-unified-linux-x64-4.6.1-online.run \ |
| 113 | + --email "$QT_EMAIL" --password "$QT_PASSWORD" --platform minimal \ |
| 114 | + --confirm-command --accept-licenses --accept-obligations --accept-messages \ |
| 115 | + install qt.qt5.5152.qtpdf qt.qt5.5152.qtpurchasing qt.qt5.5152.qtvirtualkeyboard \ |
| 116 | + qt.qt5.5152.qtquicktimeline qt.qt5.5152.qtlottie qt.qt5.5152.debug_info \ |
| 117 | + qt.qt5.5152.qtscript qt.qt5.5152.qtcharts qt.qt5.5152.qtwebengine \ |
| 118 | + qt.qt5.5152.qtwebglplugin qt.qt5.5152.qtnetworkauth \ |
| 119 | + qt.qt5.5152.qtwaylandcompositor qt.qt5.5152.qtdatavis3d qt.qt5.5152.logs \ |
| 120 | + qt.qt5.5152 qt.qt5.5152.src qt.qt5.5152.gcc_64 qt.qt5.5152.qtquick3d |
| 121 | + |
| 122 | +# Get OpenRV Git Repo |
| 123 | +RUN git clone --recursive https://github.com/AcademySoftwareFoundation/OpenRV.git |
| 124 | +RUN python3 -m pip install -r /OpenRV/requirements.txt |
| 125 | + |
| 126 | +# Build and Install OpenRV |
| 127 | +WORKDIR /OpenRV |
| 128 | +# Note: Aliases only work in interactive shells. Use bash script with expand_aliases to |
| 129 | +# use commands set in rvcmds.sh |
| 130 | +RUN echo "#!/bin/bash" > install.sh && \ |
| 131 | + echo "set -e" >> install.sh && \ |
| 132 | + echo "shopt -s expand_aliases" >> install.sh && \ |
| 133 | + echo "export QT_HOME=/opt/Qt/5.15.2/gcc_64" >> install.sh && \ |
| 134 | + echo "source /OpenRV/rvcmds.sh" >> install.sh && \ |
| 135 | + echo "rvbootstrap" >> install.sh && \ |
| 136 | + echo "rvinst" >> install.sh |
| 137 | +RUN bash ./install.sh |
63 | 138 | ``` |
64 | 139 |
|
65 | | -## Install Qt |
| 140 | +### Extract the Installation Files |
66 | 141 |
|
67 | | -Download the last version of Qt 5.15.x that you can get using the online installer on the [Qt page](https://www.qt.io/download-open-source). Logs, Android, iOS and WebAssembly are not required to build OpenRV. |
| 142 | +Next mount the image and copy the `_install` directory from it: |
| 143 | +```shell |
| 144 | +docker cp $(docker create --name temp_container openrv):/OpenRV/_install install && docker rm temp_container |
| 145 | +``` |
68 | 146 |
|
69 | | -WARNING: If you fetch Qt from another source, make sure to build it with SSL support, that it contains everything required to build PySide2, and that the file structure is similar to the official package. |
| 147 | +### Cleanup |
| 148 | + |
| 149 | +To clean up, simply remove the image: |
| 150 | +```bash |
| 151 | +docker image rm openrv |
| 152 | +``` |
0 commit comments