Building Flightgear - CentOS

Revision as of 10:46, 18 January 2020 by Puchacz (talk | contribs) (Under construction)
WIP.png Work in progress
This article or section will be worked on in the upcoming hours or days.
See history for the latest developments.

Preparation

A "Minimal Install" of CentOS 8 (64 bits) is needed.

Requirements

All the commands are run in bash as normal user (not root). The user need sudo access to install packages and add some repos.

The following repos need to be added and enabled:

sudo dnf config-manager --set-enabled PowerTools
sudo dnf install epel-release

The following packages need to be install on the the system before starting the build of FlightGear. The packages can be install using the dnf command:

sudo dnf install freeglut-devel.x86_64 openal-soft.x86_64 freetype-devel.x86_64 libjpeg-turbo-devel.x86_64 jasper-libs.x86_64 libxml2-devel.x86_64 libcurl-devel.x86_64 \
   cairo-devel.x86_64 poppler-glib.x86_64 librsvg2-devel.x86_64 gtk2-devel.x86_64 lua-libs.x86_64 lua.x86_64 fltk.x86_64 libpng-devel.x86_64 libtiff-devel.x86_64 \
   libXrandr-devel.x86_64 libXinerama-devel.x86_64 zlib-devel.x86_64 expat-devel.x86_64 boost.x86_64 openal-soft-devel.x86_64 cmake.x86_64 \
   mesa-libEGL-devel.x86_64 jasper-devel.x86_64 gstreamer1-devel.x86_64 SDL2-devel.x86_64 poppler-glib-devel.x86_64 lua-devel.x86_64 fltk-devel.x86_64 boost-devel.x86_64 \
   dbus-devel.x86_64 libevent-devel.x86_64 glew-devel.x86_64

The plib package is not available for CentOS 8. The package from CentOS 7 can be used instead. After downloading the following packages:

The 2 packages can be installed manually using the following command:

sudo rpm --install plib-1.8.5-15.el7.x86_64.rpm 
sudo rpm --install plib-devel-1.8.5-15.el7.x86_64.rpm

Definitions

The following environment variables must be set because they will be used in shell commands:

  • NR_JOBS: Number of jobs for parallel compilation. For example: NR_JOBS=$(/usr/bin/nproc)
  • FGFS_PREFIX: Prefix of the Flightgear installation. For example: FGFS_PREFIX=${HOME}/Flightgear
  • OPENSCENEGRAPH_VERSION: Version of OpenSceneGraph. For example: OPENSCENEGRAPH_VERSION=3.6.4

OpenSceneGraph

OpenSceneGraph is not available as a RPM for CentOS 8 and, for this reason, needs to build from sources. The latest stable version of OpenSceneGraph can be downloaded from here.

The following commands can be used to build OpenSceneGraph:

cd -- "${FGFS_PREFIX}/src/"
rm -Rf -- "${FGFS_PREFIX}/src/OpenSceneGraph_build/"
mkdir -- "${FGFS_PREFIX}/src/OpenSceneGraph_build/"
OPENSCENEGRAPH_SRC=${FGFS_PREFIX}/src/OpenSceneGraph-OpenSceneGraph-${OPENSCENEGRAPH_VERSION}
rm -Rf -- "${OPENSCENEGRAPH_SRC}/"
tar axvf "${FGFS_PREFIX}/src/OpenSceneGraph-OpenSceneGraph-${OPENSCENEGRAPH_VERSION}.tar.gz"
pushd -- "${FGFS_PREFIX}/src/OpenSceneGraph_build/"
cmake "${OPENSCENEGRAPH_SRC}" \
      -DCMAKE_BUILD_TYPE=Release \
      -DBUILD_OSG_EXAMPLES:BOOL=ON \
      -DOSG_USE_LOCAL_LUA_SOURCE:BOOL=OFF \
      -DCMAKE_INSTALL_PREFIX="${FGFS_PREFIX}" \
      -DCMAKE_VERBOSE_MAKEFILE=TRUE
make --jobs=${NR_JOBS}
make -- install
popd
rm -Rf -- "${OPENSCENEGRAPH_SRC}/"
rm -Rf -- "${FGFS_PREFIX}/src/OpenSceneGraph_build/"

Simgear

cd -- "${FGFS_PREFIX}/src/"
rm -Rf -- "${FGFS_PREFIX}/src/sg_build/"
mkdir -- "${FGFS_PREFIX}/src/sg_build/"
pushd -- "${FGFS_PREFIX}/src/sg_build/"
cmake "${SIMGEAR_SRC}" \
      -DCMAKE_BUILD_TYPE=RelWithDebInfo \
      -DCMAKE_INSTALL_PREFIX="${FGFS_PREFIX}" \
      -DCMAKE_VERBOSE_MAKEFILE=TRUE
make --jobs=${NR_JOBS}
make -- test
make -- install
popd
rm -Rf -- "${FGFS_PREFIX}/src/sg_build/"

Flightgear

cd -- "${FGFS_PREFIX}/src/"
rm -Rf -- "${FGFS_PREFIX}/src/fg_build/"
mkdir -- "${FGFS_PREFIX}/src/fg_build/"
pushd -- "${FGFS_PREFIX}/src/fg_build/"
cmake "${FLIGHTGEAR_SRC}" \
      -DCMAKE_BUILD_TYPE=RelWithDebInfo \
      -DCMAKE_INSTALL_PREFIX="${FGFS_PREFIX}" \
      -DCMAKE_VERBOSE_MAKEFILE=TRUE
make --jobs=${NR_JOBS}
make -- test
make -- install
popd
rm -Rf -- "${FGFS_PREFIX}/src/fg_build/"