User:Ranguli
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:
- 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
- The build process, code quality, and quality of documentation all work together to provide a low-friction, low barrier to entry for new contributors.
- 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
- Chinook Operators Checklist TM 1-1520-240-CL
- Incredibly useful, Chinook CH-47D manual: Chinook Operators Manual TM 1-1520-240-10
- Chinook Maintenance Test Flight Manual TM 1-1520-240-MTF