Howto:Build and run FlightGear on Raspberry Pi 4: Difference between revisions

Jump to navigation Jump to search
Line 644: Line 644:
===Dependencies===
===Dependencies===


Below is a list of dependencies (packages) that need to be installed before compiling.
[[Howto:Build_and_run_FlightGear_on_Raspberry_Pi_4#Download_and_compile.sh|Download_and_Compile.sh]] does a good job of installing the needed dependencies, as of 01/03/2021. Refer to that script for more information.
 
{| class="wikitable"
|-
! Package !! Version (ref. only, as of 03-28-2020) !! Notes
|-
| automake || || Needed for download_and_compile.sh, maybe more
|-
| cmake || 3.13.4-1 ||
|-
| build-essential || || Needed for download_and_compile.sh, maybe more
|-
| g++ || 4:8.3.0-1+rpi2 ||
|-
| git || 1:2.20.1-2+deb10u1 || Needs a user account at www.github.com
|-
| make || 4.2.1-1.2 ||
|-
| sed || 4.7-1 ||
|-
| freeglut3-dev || 2.8.1-3 ||
|-
| libboost-dev || 1.67.0.1+b1 ||
|-
| libcurl4-openssl-dev || 7.64.0-4+deb10u1 || OSG plugins
|-
| libdbus-1-dev || 1.12.16-1 ||
|-
| libdbus-1-3 ||    ||
|-
| libevent-dev || 2.1.8-stable-4 ||
|-
| libfreetype6-dev || 2.9.1-3+deb10u1 ||
|-
| libglew-dev || 2.1.0-4 ||
|-
| libjpeg62-dev ||  || OSG plugin
|-
| libnvtt-dev || 2.0.8-1+dfsg-8.1+b3 ||
|-
| libopenal-dev || 1:1.19.1-1 ||
|-
|libopenscenegraph-3.4-dev || 3.4.1+dfsg1-5 ||
|-
| libqt5opengl5-dev || 5.11.3+dfsg1-1+rpi1+deb10u3 ||
|-
| libqt5svg5-dev || 5.11.3-2 ||
|-
| librsvg2 || || OSG plugin, if needed
|-
| librsvg2-dev || || OSG plugin, if needed
|-
| libssl-dev || 1.1.1d-0+deb10u3+rpt1 || Needed if building Cmake
|-
| libxi-dev || 2:1.7.9-1 ||
|-
| libxmu-dev || 2:1.1.2-2+b3 ||
|-
| pkg-config || 0.29-6 ||
|-
| qml-module-qtquick2 || 5.11.3-4 ||
|-
| qml-module-qtquick-window2 || 5.11.3-4 ||
|-
| qt5-default || 5.11.3+dfsg1-1+rpi1+deb10u3 ||
|-
| qtbase5-private-dev || 5.11.3+dfsg1-1+rpi1+deb10u3 ||
|-
| qtdeclarative5-private-dev || 5.11.3-4 ||
|-
| qttools5-dev || 5.11.3-4 ||
|-
| zlib1g-dev || 1:1.2.11.dfsg-1 || OSG plugin
|}


====Extra Information====
The command <code>dpkg -s package_name</code> can be used, in the terminal to verify if a package is installed. Replace 'package_name' with the name of the dependency from the above list.
The command <code>dpkg -s package_name</code> can be used, in the terminal to verify if a package is installed. Replace 'package_name' with the name of the dependency from the above list.


Before installing any missing dependencies, update Raspbian per the above [[Howto:Build_and_run_FlightGear_on_Raspberry_Pi_4#Update_Raspbian|Update Raspbian]] instructions. The below terminal command can be used to install any missing dependencies:
Before installing any missing dependencies, update Raspbian per the above (Download_and_Compile.sh will do this for you) [[Howto:Build_and_run_FlightGear_on_Raspberry_Pi_4#Update_Raspbian|Update Raspbian]] instructions. The below terminal command can be used to install any missing dependencies:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Line 727: Line 655:
</syntaxhighlight>
</syntaxhighlight>


====git====
===git===
A popular method to control software revisions is with <code>git</code>. Some basic knowledge of <code>git</code> is helpful and interesting. So, try to learn the basics.


{| class="wikitable"
{| class="wikitable"
Line 753: Line 682:
Link to <code>git</code> [https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration configuration and customization] information page.
Link to <code>git</code> [https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration configuration and customization] information page.


Florent wrote:
Some Essential git commands:
 
* <code>git status</code>
<blockquote>
* <code>git checkout</code>
I'm not knowledgeable about details of the RaspBerry PI build; what I can
* <code>git pull</code>
say regarding your message is: when you clone a Git repository with no
special option such as <code>--bare</code>, some branch is initially checked out (often,
this is 'master'). This means that only this particular branch is clearly
visible in the directory where the repository has been cloned. Other
branches may be present in hidden/machine form inside the .git subdirectory
after you do <code>git fetch foo</code>, where foo is the name of a <s>branch</s>.
 
Run <code>git branch -r</code> to see what branches are available remotely, then <code>git
fetch foo</code> to retrieve the <s>branch</s> you are interested in (supposedly called
'foo' here). This only happens in the .git subdirectory, but then <code>git
checkout foo</code> should cause this branch to appear in the filesystem,
replacing whatever was previously checked out in your clone of the upstream
repository. In the case of the download_and_compile.sh script,
OpenSceneGraph-3.4 is the name of the OSG branch currently used by the
script (until a newer version is deemed preferable). Note that as a safety
measure, you can't check out a different branch when there is “unfinished
work” (things modified but not committed) on the currently checked-out
branch.
 
Hope this helps. Regards
 
I have to correct something from my first reply in this thread:
 
The argument passed to <code>git fetch</code> is not branch name (according to
the manual, it's a <refspec>). The way I use this command is by
passing a remote name, e.g. <code>git fetch origin</code> or 'git fetch
upstream'. A “remote” is some place where the repository is hosted
that is known to your clone (.git/config). Thus, your clone can fetch
branches and commits from remotes. A remote can offer many branches.
You can display info about known remotes with <code>git remove -v</code> from
within your clone, but I believe this info essentially comes from the
.git/config file.
</blockquote>
 
Essential git commands:
* git status
* git checkout
* git pull
** Can be used to update the fgmeta folder when using the download_and_compile.sh script. Use this command from within the fgmeta folder.
** Can be used to update the fgmeta folder when using the download_and_compile.sh script. Use this command from within the fgmeta folder.
* git reset --hard
* <code>git reset --hard</code>
* git log
* <code>git log</code>
** REVISION example '522c742419e028daf35e79f9c6097ffa34c9f536' (this revision number was found in the FlightGear menu and at flightgear/dnc-managed/build/flightgear/src/Include/build.h. Florent wrote: <blockquote> This is a recent FG commit. You can find it with: cd flightgear/dnc-managed/flightgear && git log. Then you can type /522c742419e028daf35e79f9c6097ffa34c9f536 to look for this string in the output (the search string is interpreted as a regular expression) in less, n for next occurrence, N for previous, q to quit (I'm assuming less is your $GIT_PAGER). Or more directly: git show 522c742419e028daf35e79f9c6097ffa34c9f53 in the same dir. Regards </blockquote>
 
* git diff


Also see [[FlightGear Git]].
Also see [[FlightGear Git]].
320

edits

Navigation menu