Difference between revisions of "Building Flightgear - CentOS"

From FlightGear wiki
Jump to: navigation, search
m
m
Line 1: Line 1:
{{Under Construction}}
 
 
 
= Preparation =
 
= Preparation =
 
A "Minimal Install" of CentOS 8 (64 bits) is needed.
 
A "Minimal Install" of CentOS 8 (64 bits) is needed.
Line 33: Line 31:
 
* <code>NR_JOBS</code>: Number of jobs for parallel compilation. For example: <code>NR_JOBS=$(/usr/bin/nproc)</code>.
 
* <code>NR_JOBS</code>: Number of jobs for parallel compilation. For example: <code>NR_JOBS=$(/usr/bin/nproc)</code>.
 
* <code>FGFS_PREFIX</code>: Prefix of the Flightgear installation. For example: <code>FGFS_PREFIX=${HOME}/Flightgear</code>. All the source code must be located under the directory <code>${FGFS_PREFIX}/src</code> and the installation will be done under the directory <code>${FGFS_PREFIX}</code> as <code>${FGFS_PREFIX}/bin</code>, <code>${FGFS_PREFIX}/include</code>, <code>${FGFS_PREFIX}/lib</code>,...
 
* <code>FGFS_PREFIX</code>: Prefix of the Flightgear installation. For example: <code>FGFS_PREFIX=${HOME}/Flightgear</code>. All the source code must be located under the directory <code>${FGFS_PREFIX}/src</code> and the installation will be done under the directory <code>${FGFS_PREFIX}</code> as <code>${FGFS_PREFIX}/bin</code>, <code>${FGFS_PREFIX}/include</code>, <code>${FGFS_PREFIX}/lib</code>,...
* <code>OPENSCENEGRAPH_VERSION</code>: Version of OpenSceneGraph. For example: <code>OPENSCENEGRAPH_VERSION=3.6.4</code>.
+
* <code>OPENSCENEGRAPH_VERSION</code>: Version of OpenSceneGraph. For example: <code>OPENSCENEGRAPH_VERSION=3.6.5</code>.
  
 
= OpenSceneGraph =
 
= OpenSceneGraph =
Line 132: Line 130:
 
       -DCMAKE_VERBOSE_MAKEFILE=TRUE
 
       -DCMAKE_VERBOSE_MAKEFILE=TRUE
 
  make --jobs=${NR_JOBS}
 
  make --jobs=${NR_JOBS}
 +
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${FGFS_PREFIX}/lib64/
 +
FG_ROOT=${FGFS_PREFIX}/lib64/Flightgear make --jobs=${NR_JOBS} -- test_suite || true
 
  make -- test
 
  make -- test
 
  make -- install
 
  make -- install
Line 145: Line 145:
 
  tar axvf "${FGFS_PREFIX}/src/FlightGear-${FLIGHTGEAR_VERSION}-data.tar.bz2"
 
  tar axvf "${FGFS_PREFIX}/src/FlightGear-${FLIGHTGEAR_VERSION}-data.tar.bz2"
 
  popd
 
  popd
  pushd -- "${FGFS_PREFIX}/lib/"
+
  pushd -- "${FGFS_PREFIX}/lib64/"
 
  ln --symbolic -- "FlightGear-${FLIGHTGEAR_VERSION}/fgdata/" FlightGear
 
  ln --symbolic -- "FlightGear-${FLIGHTGEAR_VERSION}/fgdata/" FlightGear
 
  popd
 
  popd
Line 165: Line 165:
  
 
  cd -- "${FGFS_PREFIX}"
 
  cd -- "${FGFS_PREFIX}"
  export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${FGFS_PREFIX}/lib64
+
  export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${FGFS_PREFIX}/lib64/
 
  ./bin/fgfs
 
  ./bin/fgfs
  
 
[[Category:Building from source]]
 
[[Category:Building from source]]

Revision as of 11:43, 13 April 2020

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 qt5-qtdeclarative-devel.x86_64 qt5-qtsvg-devel.x86_64 qt5-linguist.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. All the source code must be located under the directory ${FGFS_PREFIX}/src and the installation will be done under the directory ${FGFS_PREFIX} as ${FGFS_PREFIX}/bin, ${FGFS_PREFIX}/include, ${FGFS_PREFIX}/lib,...
  • OPENSCENEGRAPH_VERSION: Version of OpenSceneGraph. For example: OPENSCENEGRAPH_VERSION=3.6.5.

OpenSceneGraph

OpenSceneGraph is not available as a RPM for CentOS 8 and, for this reason, needs to be build from sources. The latest stable version of OpenSceneGraph can be downloaded from here. The downloaded file must be placed under the directory ${FGFS_PREFIX}/src such that the full path of the file will be ${FGFS_PREFIX}/src/OpenSceneGraph-OpenSceneGraph-${OPENSCENEGRAPH_VERSION}.

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}" \
      -DLIB_POSTFIX=64 \
      -DCMAKE_VERBOSE_MAKEFILE=TRUE
make --jobs=${NR_JOBS}
make -- install
popd
rm -Rf -- "${OPENSCENEGRAPH_SRC}/"
rm -Rf -- "${FGFS_PREFIX}/src/OpenSceneGraph_build/"

Simgear

The source code of Simgear can be provided:

  • as an official release that can be downloaded from here. The environment variable SIMGEAR_VERSION must be set to the relevant version of Simgear, for example SIMGEAR_VERSION=2019.1.1 and then using the following commands to extract the source code:
cd -- "${FGFS_PREFIX}/src/"
SIMGEAR_SRC=${FGFS_PREFIX}/src/simgear-${SIMGEAR_VERSION}
rm -Rf -- "${SIMGEAR_SRC}/"
tar axvf "${FGFS_PREFIX}/src/simgear-${SIMGEAR_VERSION}.tar.bz2"
  • as a clone of the Simgear Git repo by using the following commands:
cd -- "${FGFS_PREFIX}/src/"
git clone https://git.code.sf.net/p/flightgear/simgear flightgear-simgear
SIMGEAR_SRC=${FGFS_PREFIX}/src/flightgear-simgear
  • if you have already a clone of the Simgear Git repo, the local copy can be updated using the following commands:
cd -- "${FGFS_PREFIX}/src/"
SIMGEAR_SRC=${FGFS_PREFIX}/src/flightgear-simgear
pushd -- "${SIMGEAR_SRC}/"
git pull
popd

Now that the source code of Simgear is available under the directory ${SIMGEAR_SRC}, the build can be started using the following commands:

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

The source code of Flightgear can be provided:

  • as an official release that can be downloaded from here. The version of Simgear and Flightgear must match. The environment variable FLIGHTGEAR_VERSION must be set to the relevant version of Flightgear, for example FLIGHTGEAR_VERSION=2019.1.1 and then using the following commands to extract the source code:
cd -- "${FGFS_PREFIX}/src/"
FLIGHTGEAR_SRC=${FGFS_PREFIX}/src/flightgear-${FLIGHTGEAR_VERSION}
rm -Rf -- "${FLIGHTGEAR_SRC}/"
tar axvf "${FGFS_PREFIX}/src/flightgear-${FLIGHTGEAR_VERSION}.tar.bz2"
  • as a clone of the Flightgear Git repo by using the following commands:
cd -- "${FGFS_PREFIX}/src/"
git clone https://git.code.sf.net/p/flightgear/flightgear flightgear-flightgear
FLIGHTGEAR_SRC=${FGFS_PREFIX}/src/flightgear-flightgear
  • if you have already a clone of the Flightgear Git repo, the local copy can be updated using the following commands:
cd -- "${FGFS_PREFIX}/src/"
FLIGHTGEAR_SRC=${FGFS_PREFIX}/src/flightgear-flightgear
pushd -- "${FLIGHTGEAR_SRC}/"
git pull
popd

Now that the source code of Flightgear is available under the directory ${FLIGHTGEAR_SRC}, the build can be started using the following commands:

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}
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${FGFS_PREFIX}/lib64/
FG_ROOT=${FGFS_PREFIX}/lib64/Flightgear make --jobs=${NR_JOBS} -- test_suite || true
make -- test
make -- install
popd
rm -Rf -- "${FGFS_PREFIX}/src/fg_build/"

The data for Flightgear can be provided:

  • as an official release that can be downloaded from here.
rm -f -- "${FGFS_PREFIX}/lib/FlightGear"
rm -Rf -- "${FGFS_PREFIX}/lib/FlightGear-${FLIGHTGEAR_VERSION}/"
mkdir --parents -- "${FGFS_PREFIX}/lib/FlightGear-${FLIGHTGEAR_VERSION}/"
pushd -- "${FGFS_PREFIX}/lib/FlightGear-${FLIGHTGEAR_VERSION}/"
tar axvf "${FGFS_PREFIX}/src/FlightGear-${FLIGHTGEAR_VERSION}-data.tar.bz2"
popd
pushd -- "${FGFS_PREFIX}/lib64/"
ln --symbolic -- "FlightGear-${FLIGHTGEAR_VERSION}/fgdata/" FlightGear
popd
  • as a clone of the Flightgear Git repo by using the following commands:
pushd -- "${FGFS_PREFIX}/lib64/"
git clone --depth 1 https://git.code.sf.net/p/flightgear/fgdata flightgear-fgdata
ln --symbolic -- "flightgear-fgdata/" FlightGear
popd
  • if you have already a clone of the Flightgear Git repo, the local copy can be updated using the following commands:
pushd -- "${FGFS_PREFIX}/lib64/flightgear-fgdata/"
git pull
popd

Start Flightgear

cd -- "${FGFS_PREFIX}"
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${FGFS_PREFIX}/lib64/
./bin/fgfs