Puffergas

Joined 17 February 2020
Line 1: Line 1:
==SD Card==
===Copy Path(s)===
===SD Card Speed Test===
[[File:Copy Path(s).jpeg|thumb|150px|Easy way to copy the path of a file or folder.]]
 
During the compiling process there will be times when the path of a file or folder is needed for a Terminal command. One easy GUI short cut is to right click on the file or folder to pull up an option list. Find the option 'Copy Path(s)' and click on it. The path of the file or folder will be copied. Next, in the Terminal, click on 'Edit' at the top of the Terminal window and then click on 'Paste' in order to past the link into the Terminal. See the screen shot to the left.
 
===Location of Files===
The SD card performs well for common computer tasks and running FlightGear. However, compiling large programs could wear out the SD card before it's time. This is an excellent application for a SSD drive. Especially if many compiled versions of FlightGear are planned. For that reason this Wiki will choose to compile and install FlightGear on a [[Howto:Build_and_run_FlightGear_on_Raspberry_Pi_4#Hard_Drives|SSD drive]].
 
This is a good time to create some needed folders on the SSD. For this Wiki the folder '''FlightGear''' was created in the root of the SSD. Within this newly created folder '''FlightGear''', create two more folders named '''fg-install''' and '''source'''. Use your favorite method to navigate and create folders, whether it be the Terminal or GUI. Furthuremore, these files can have other names as long as those other names are globally used.
 
===Build Order===
wkitty42 wrote:
 
"The [[Scripted Compilation on Linux Debian/Ubuntu|download_and_compile.sh]] builds in this order:
 
PLIB, OSG, SimGear, FlightGear
 
It updates fgdata between the building of SimGear and FlightGear so that the translations
tool can be handled properly..."
===Patching; OSG patch example===
There could come a time when the source needs to be patched before compiling. In this case the <code>patch</code> command can be used along with it's argument <code>-p</code>. For example; the OpenSceneGraph-3.4.0 requires the '0007-Explicit-signed-char-type-for-portability-base64.patch' patch, in order for it to compile for the ARM architecture.
 
In this example, the patch can be found at this link: [https://sources.debian.org/patches/openscenegraph-3.4/3.4.1+dfsg1-5/ OpenSceneGraph-3-4-0 patch]. The <code>download</code> link for '0007-Explicit-signed-char-type-for-portability-base64.patch' is what we are looking for. This file can be downloaded with the <code>wget</code> command as seen below:
 
<syntaxhighlight>wget --trust-server-names https://sources.debian.org/src/openscenegraph-3.4/3.4.1+dfsg1-5/src/osgPlugins/osgjs/Base64.cpp/</syntaxhighlight>
 
Place, the above patch file, into the the source root folder of OpenSceneGraph-3-4-0.
 
The argument ,<code>-p</code> adjusts the path of the patch. Below is an example of a snippet from a patch. Reference the line ,<code>--- openscenegraph-3.4.orig/src/osgDB/ConvertBase64.cpp</code>. The folder <code>openscenegraph-3.4.orig/</code> can not be used, in our example. In this case, one of the path folders need to be ignored, hence <code>-p1</code>. If two path folders needed to be ignored; <code>-p2</code>.
 
<syntaxhighlight>Index: openscenegraph-3.4/src/osgDB/ConvertBase64.cpp
===================================================================
--- openscenegraph-3.4.orig/src/osgDB/ConvertBase64.cpp
+++ openscenegraph-3.4/src/osgDB/ConvertBase64.cpp
@@ -28,7 +28,7 @@ namespace osgDB
    int base64_decode_value(char value_in)
    {
-        static const char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51};
+        static const signed char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51};
        static const char decoding_size = sizeof(decoding);
        value_in -= 43;
        if (value_in < 0 || value_in > decoding_size) return -1;</syntaxhighlight>
 
Navigate the terminal into the root folder of OpenSceneGraph-3.4.0 source. Side note: the <code>patch</code> command might need to be installed. Now enter the below command into the terminal:
 
<syntaxhighlight>patch -p1 <0007-Explicit-signed-char-type-for-portability-base64.patch</syntaxhighlight>
 
===PLIB===
{| class="wikitable"
! scope="col" width="700" | Compilation algorithm for [[PLIB]].
! scope="col" width="400" | Directory tree structure
|-
|
# Navigate the Terminal into the '''source''' folder.
# Enter the below command into the Terminal:
#* <syntaxhighlight lang="bash">git clone git://git.code.sf.net/p/libplib/code libplib.git</syntaxhighlight>
#** This will copy the needed source files into this folder '''source'''.
# Enter the below command into the Terminal:
#* <syntaxhighlight lang="bash">cd libplib.git</syntaxhighlight>
#** This will navigate the Terminal into the folder '''libplib.git''' that was created and populated by the <code>git</code> command.
# Enter the below command into the Terminal:
#* <syntaxhighlight lang="bash">echo "1.8.6" > version</syntaxhighlight>
#**This will edit the file 'version' that is in this folder. This file can also be modified with a text editor, even via a GUI.
# Enter the below command into the Terminal:
#* <syntaxhighlight lang="bash">sed s/PLIB_TINY_VERSION\ \ 5/PLIB_TINY_VERSION\ \ 6/ -i src/util/ul.h</syntaxhighlight>
#** This is some complicated version editing.
# Enter the below command into the Terminal:
#* <syntaxhighlight lang="bash">git commit --all --message "Increase tiny version to 6."</syntaxhighlight>
#** More version patching stuff.
# Create a folder named '''build-plib''' and have it placed in the '''source''' folder.
#* The <code>mkdir</code> command or a GUI method can be used to create this folder.
#* In other words; '''FlightGear/source/build-plib'''
# Navigate the Terminal into the '''build-plib''' folder that was just created.
# Enter the below command into the Terminal:
#* <syntaxhighlight lang="bash">cmake -D CMAKE_INSTALL_PREFIX:PATH=fg-install libplib.git</syntaxhighlight>
#** The two folders '''fg-install''' and '''libplib.git''' need to be replaced with the relative or absolute address of these folders. Use your favorite method.
#** The absolute address can easily be copied and pasted with the above [[Howto:Build_and_run_FlightGear_on_Raspberry_Pi_4#Copy_Path(s)|Copy Path(s)]] method. This could be a large string, however the Terminal doesn't mind.
#* This will setup the build.
# Enter the below command into the Terminal:
#* <syntaxhighlight lang="bash">make -j3</syntaxhighlight>
#** This will perform the compiling.
#** The <code>-j3</code> argument will allow three of the Pi's cores to participate in the compilation.
# Enter the below command into the Terminal:
#* <syntaxhighlight lang="bash">make install</syntaxhighlight>
#** PLIB will be installed into the '''fg-install''' folder.
|
<pre>
Storage Device
|
|
|----FlightGear
|    |
|    |
|    |----fg-install
|    |
|    |
|    |
|    |----source
|    |    |  [1] [2]
|    |    |
|    |    |
|    |    |----build-plib
|    |    |    [8] [9] [10] [11]
|    |    |
|    |    |
|    |    |----libplib.git
|    |    |      [3] [4] [5] [6]
|    |    |      [7]
|    |    |
|    |
|
</pre>
 
|}
 
===OSG===


{| class="wikitable"
{| class="wikitable"
! scope="col" width="700" | Compilation algorithm for [[OSG]].
! scope="col" width="400" | Directory tree structure
|-
|-
! SD Card !! Bar Code !! SWS KB/sec !! RWS IOPS !! RRS IOPS !! Comment
|
{{not done}}
# Navigate the Terminal into the '''source''' folder.
# Enter the below command into the Terminal:
#* <syntaxhighlight lang="bash">git clone --branch OpenSceneGraph-3.4.0 https://github.com/openscenegraph/OpenSceneGraph.git</syntaxhighlight>
#** The above is one line.
# Patch OSG 3.4 with [[Howto:Build_and_run_FlightGear_on_Raspberry_Pi_4#Patching|with the above steps]].
{{not done}}
 
 
|
<pre>
Storage Device
|
|
|----FlightGear
|    |
|    |
|    |----fg-install
|    |
|    |
|    |
|    |----source
|    |    |  [1] [2]
|    |    |
|    |    |
|    |    |----OpenSceneGraph
|    |    |      [3] 
|    |    |
|    |    |
|    |    |----
|    |    |     
|    |    |     
|    |    |
|    |
|
</pre>
{{not done}}
 
|}
 
===OpenRTI===
James wrote:
"[[FlightGear high-level architecture support | OpenRTI]] is optional. If you're using it, you need to compile it before SimGear (and therefore, before FlightGear). It's orthogonal to OSG.
 
===SimGear===
{| class="wikitable"
! scope="col" width="700" | Compilation algorithm for [[SimGear]].
! scope="col" width="400" | Directory tree structure
|-
|-
| SP Superior Pro 64GB || X0026RJ70Z || 38986 || 1067 || 3344 || Used for ~ 1 month
|
# {{not done}}
#* {{not done}}
 
 
|  
<pre>
Storage Device
|
|
|----FlightGear
|     |
|     |
|     |----fg-install
|    |
|    |
|    |
|    |----source
|    |    | 
|    |    |
|    |    |
|    |    |----build-plib
|    |    |   
|    |    |
|    |    |
|    |    |----libplib.git
|    |    |     
|    |    |     
|    |    |
|    |
|
</pre>
{{not done}}
 
|}
 
===FlightGear===
{| class="wikitable"
! scope="col" width="700" | Compilation algorithm for FlightGear.
! scope="col" width="400" | Directory tree structure
|-
|-
| Example || Example || Example || Example || Example || Example
|
# {{not done}}
#* {{not done}}
 
 
|  
<pre>
Storage Device
|
|
|----FlightGear
|     |
|     |
|     |----fg-install
|    |
|    |
|    |
|    |----source
|    |    | 
|    |    |
|    |    |
|    |    |----build-plib
|    |    |   
|    |    |
|    |    |
|    |    |----libplib.git
|    |    |     
|    |    |     
|    |    |
|    |
|
</pre>
{{not done}}
 
|}
 
===FlightGear Data===
{| class="wikitable"
! scope="col" width="700" | Install algorithm for FlightGear Data.
! scope="col" width="400" | Directory tree structure
|-
|-
| Example || Example || Example || Example || Example || Example
|
# {{not done}}
#* {{not done}}
 
 
|  
<pre>
Storage Device
|
|
|----FlightGear
|     |
|     |
|     |----fg-install
|    |
|    |
|    |
|    |----source
|    |    | 
|    |    |
|    |    |
|    |    |----build-plib
|    |    |   
|    |    |
|    |    |
|    |    |----libplib.git
|    |    |     
|    |    |     
|    |    |
|    |
|
</pre>
{{not done}}
 
|}
|}
320

edits