User:Ranguli

From FlightGear wiki
Jump to navigation Jump to search

Hi there,

I'm a fan of Flight Gear and have joined the Wiki to tidy things up as I come across them. If I don't fix them then and there on the spot, they'll go into the list below.

Cheers,

Ranguli (talk) 10:30, 20 August 2020 (EDT)

Building FlightGear (WIP Article)

Why this article exists (and why good build documentation is paramount)

The long-term health and growth of open-source projects is directly tied to the size and quality of the community that is built around it. One of the most important groups of people within these communities are developers. Developers are like the worker bees of a bee colony, and are the lifeblood of a project. Much like the world-wide shortage of bees, there are more open-source projects needing help than there are developers to help them. So it stands to reason that it is in any open-source projects best interest to retain the developers that take an interest in the project. The art of making developers lives easier is called developer experience (DX), and projects may live or die by it, with or without knowing it was a factor. Quite simply, developers who have a bad experience with a project will not contribute. Can you blame them?

The first place a developer is liable to have a bad experience with a project (and then move on) is when they first come face to face with documentation. The first impression a developer will get of a project will be from its README or equivalent documentation, particularly, the instructions for building the software. Many a developer has been eager to contribute to a project only to find a lack of documentation, and (rightfully so), moved on to other, less frustrating pursuits in the open-source world.

There are three guiding principles for not sending developers for the hills:

  1. There is one way to build the project, using one build system, following one set of instructions, that are easy to follow and consist of only a few steps
  2. The build process, code quality, and quality of documentation all work together to provide a low-friction, low barrier to entry for new contributors.
  3. If a developer has a bad experience, that is a bug.

Building FlightGear on Ubuntu and derivatives

FlightGear requires a large number of dependencies to build. In a terminal, you can install all necessary dependencies by using the following command:


Building SimGear

Dependency Ubuntu 22.04 Ubuntu 24.04
Boost libboost1.74-dev libboost1.83-dev
Open Audio Library (OpenAL) libopenal-dev -
OpenSceneGraph (OSG) libopenscenegraph-dev -
liblzma liblzma-dev -

cmake

git

build-essential

pkg-config

make

gcc

g++

libboost1.74-dev

libopenal-dev

libopenscenegraph-dev

libcurl4-openssl-dev

24.04LTS

sudo apt install git gcc g++ build-essential cmake 


22.04LTSFlightGear also has a dependency on another part of the FlightGear project, SimGear. So in order to build FlightGear we must first build SimGear.

Obtain the SimGear source code by cloning from Git:

git clone https://git.code.sf.net/p/flightgear/simgear flightgear-simgear

Next, follow the standard procedure for building a CMake project:

cd flightgear-simgear

mkdir build && cd build

cmake .. -DCMAKE_BUILD_TYPE=Release

make -jX # Where X is the number of cores on your system

sudo make install

Building FlightGear

DRAFT

Dependency Hard dependency? Required for Ubuntu 22.04 Ubuntu 24.04
libplib Yes Legacy joystick support libplib-dev -
libudev Yes Peripheral / input support libudev-dev -
Qt 5 Base Yes Building FlightGear GUI launcher qtbase5-dev -
Qt 5 SVG Yes Building FlightGear GUI launcher libqt5svg5-dev -
Qt 5 Declarative Yes Building FlightGear GUI launcher qtdeclarative5-dev
Qt 5 Tools Yes Building FlightGear GUI launcher qttools5-dev-tools, qttools5-dev -
Qt 5 Tools Yes Building FlightGear GUI launcher qttools5-dev
Qt 5 Quick Maybe Building FlightGear GUI launcher qtquickcontrols2-5-dev, qml-module-qtquick2
Qt 5 QML Maybe Building FlightGear GUI launcher qml-module-qtquick-controls2
libevent No Swift client support libevent-dev -
zlib Yes File compression/decompression zlib1g-dev
dbus No Swift client support libdbus-1-dev -
OpenXR No Virtual Reality (VR) support libopenxr-dev -


sudo apt installlibplib-dev qtbase5-dev libqt5svg5-dev qtdeclarative5-dev qttools5-dev-tools qttools5-dev libevent-dev libdbus-1-dev libudev-dev qml-module-qtquick2-controls2 libavformat-dev libavutil-dev libswscale-dev libavfilter-dev libavdevice-dev libavcodec-dev libopenxr-dev

Other notes

  1. Chinook Operators Checklist TM 1-1520-240-CL
  2. Incredibly useful, Chinook CH-47D manual: Chinook Operators Manual TM 1-1520-240-10
  3. Chinook Maintenance Test Flight Manual TM 1-1520-240-MTF