Compare commits

...

88 Commits

Author SHA1 Message Date
Automatic Release Builder
f93f1f22f8 Update submodule commits 2020-05-24 15:07:32 +01:00
Automatic Release Builder
6d2a64bb3f Bump submodule 2020-05-23 15:37:28 +01:00
Automatic Release Builder
17dd55f886 Update submodule version 2020-05-22 10:10:08 +01:00
Automatic Release Builder
efd0fd9608 Update versions 2020-05-18 11:57:08 +01:00
Automatic Release Builder
ef59f85217 new version: 2020.1.2 2020-05-18 11:54:59 +01:00
James Turner
d1da9d2bbb Latest FG version 2020-05-18 11:53:01 +01:00
James Turner
62c416cf8c Picking additional fixes 2020-05-14 13:55:15 +01:00
James Turner
1415af71f6 Update submodule revisions 2020-05-10 19:57:27 +01:00
James Turner
8e41c1308b Update FGData commit 2020-05-05 14:28:54 +01:00
legoboyvdlp R
e658f8b12d Add support for compositor to windows builds 2020-05-05 08:58:08 +01:00
James Turner
3f6d7164ff Update submodule revisions 2020-05-04 21:43:09 +01:00
James Turner
1650e37230 macOS: package libSentry 2020-05-03 19:50:50 +01:00
James Turner
7bd7b8792b set correct release-branch for submodules 2020-04-27 09:30:08 +01:00
James Turner
6e608907b4 new version: 2020.1.1 2020-04-27 09:30:08 +01:00
Florent Rougon
ac504c70a2 download_and_compile.sh: fix typo in help text 2020-04-25 11:17:56 +02:00
Florent Rougon
2bb86ee6ea download_and_compile.sh: update address and branch for CMake
- The old URL for CMake's Git repository doesn't support https anymore;
  update it to match the one given at <https://cmake.org/>.

- Build the 'release' branch rather than 'master':
  download_and_compile.sh is not meant for CMake hackers!
2020-04-25 11:17:56 +02:00
James Turner
a02dc9aad6 Window: update installer script for Sentry
Replace CrashRpt DLL and uploader with the corresponding ones for the
Sentry-native API.
2020-04-18 19:54:00 +01:00
Florent Rougon
69033f37f8 i18n Python scripts: declare plural forms for Catalan and Slovak
Regarding Slovak language, there was enough info in
<https://code.qt.io/cgit/qt/qttools.git/tree/src/linguist/shared/numerus.cpp>.
As for Catalan, I don't see anything there, so I put
"ca": ["singular", "plural"] based on the fact that [1] says:

  "Catalan has an inflectional grammar. Nouns have two genders
   (masculine, feminine), and two numbers (singular, plural)."

I suspect we'll be ahead of Qt Linguist for Catalan.

[1] https://en.wikipedia.org/wiki/Catalan_language
2020-04-15 11:40:26 +02:00
James Turner
aa7770911b Revert "macOS: remove use of Ninja for now"
This reverts commit b954ad8cd7.
2020-04-11 16:38:43 +01:00
James Turner
b954ad8cd7 macOS: remove use of Ninja for now
For some reason the slave doesn’t like Ninja, let’s disable it until
I figure out why.
2020-04-10 12:07:04 +01:00
James Turner
9158b1688e Update macoS/Win build scripts for symbol uploading 2020-04-08 16:14:38 +01:00
James Turner
9effd91f62 macOS: Use different bundle identifiers for nightly builds
Also switch so nightly builds are always ‘lite’ (not full) to save
bandwidth / computational load on Jenkins
2020-04-02 22:21:20 +01:00
James Turner
0ddf75b382 Copy Swift libraries on macOS 2020-03-30 13:32:57 +01:00
Julian Smith
a2eb0d7b4c download_and_compile.sh: added --compositor option. 2020-03-24 22:21:01 +00:00
James Turner
14ee759409 Fix Python3 compatability 2020-03-24 14:27:27 +00:00
James Turner
aff1ac0f69 Add more catalog tags based on what’s used 2020-03-24 14:24:29 +00:00
James Turner
9453e085b3 Add Mespieler aircraft mirror 2020-03-21 18:41:45 +00:00
James Turner
da4cf552cb Bugfix, missed $ on global variable 2020-03-18 12:41:42 +00:00
James Turner
91e0f86a0b macOS: code-signing changes 2020-03-17 16:33:27 +00:00
James Turner
aae488794e Notarization support in macOS packaging scripts 2020-03-13 16:59:14 +00:00
Edward d'Auvergne
4dffeeb56e Catalogs: Addition of an initial README.md file. 2019-11-18 11:23:27 +01:00
Edward d'Auvergne
ed7075f4ba Catalogs: Python 3 compatibility for reading binary data.
IO data needs to be decoded, and the binary zip file needs to be opened in 'rb'
binary mode.
2019-11-18 10:26:40 +01:00
Edward d'Auvergne
185a10f7c5 Catalogs: Python3 does not have a 'long' integer type. 2019-11-18 10:10:22 +01:00
Edward d'Auvergne
5d3fcd3ba0 Catalogs: Converted all print statements into Python 3 compatible functions. 2019-11-18 10:06:24 +01:00
Edward d'Auvergne
3b1a3c51b1 Catalogs: Default to Python 3. 2019-11-18 09:58:58 +01:00
Edward d'Auvergne
ea18939738 Catalogs: Addition of example configuration files for testing a single craft.
This is useful for aircraft authors to see what will be packed into the zip
archive.
2019-11-14 12:00:02 +01:00
Edward d'Auvergne
d22ff42e42 Catalogs: The scm <update> XML tag is now used.
The tag can be overridden on the command line with the --update and --no-update options.
2019-11-14 11:59:56 +01:00
Edward d'Auvergne
190d789a54 Catalogs: Support for <include> tags to allow a subset of craft to be cataloged. 2019-11-13 22:26:11 +01:00
Edward d'Auvergne
8534a8aba4 Catalogs: Modification of the template file parsing.
The code is now a function in the 'catalog' module and checks for the existence
of the file are now performed.
2019-11-13 22:26:11 +01:00
Edward d'Auvergne
9ec3e015b2 Catalogs: Modification of the configuration file parsing.
The code is now a function in the 'catalog' module and checks for the existence
of the file are now performed.
2019-11-13 22:26:10 +01:00
Edward d'Auvergne
b8c05410e3 Catalogs: Rewrite of the craft zip creation using the Python zipfile module.
If a 'zip-excludes.lst' file is found in the craft's base directory, that will
overwrite the global catalog exclusion list.

Three new unit tests have been created to test the functionality.
2019-11-13 22:25:49 +01:00
Edward d'Auvergne
fd6fae3858 Catalogs: Expansion of the zip archive exclusion file.
This includes addition of the craft development directories 'dev', 'Dev',
'development', 'src', and 'Resources' and handling the common compressed gimp
file *.xcf.gz, a capitalised gimp file, and Blender *.blend[1-9] files.
2019-11-13 22:18:43 +01:00
Edward d'Auvergne
ca4a2ca813 Catalogs: Bug fixes allowing the unit tests to pass again.
3 of the tests have been broken since 70dfd6b8d4,
the change to LXML.
2019-11-12 14:26:24 +01:00
Torsten Dreyer
da0d245685 Script to create the scenery pack 2019-11-06 13:51:41 +01:00
Scott Giese
e0568f4f63 Final 'white text' version 2019-09-29 22:41:01 -05:00
Scott Giese
f61d0d35bd Add option for white text fix. 2019-09-29 17:50:58 -05:00
Scott Giese
61fbe94ee2 [fg-from-scratch] curl_debug library 2019-09-21 11:55:29 -05:00
Scott Giese
523fe108be [fg-from-scratch] PLIB and debug modules 2019-09-21 11:12:11 -05:00
Scott Giese
23e6b50aa9 [fg-from-scratch] improved SimGear options 2019-09-21 10:21:14 -05:00
Scott Giese
22337b2bdb [fg-from-scratch] improve FG and TG options 2019-09-19 19:58:26 -05:00
Scott Giese
b38a53490c [fg-from-scratch] improve SimGear options 2019-09-18 23:13:53 -05:00
Scott Giese
326dd6e11d [fg-from-scratch] improve OSG build options 2019-09-18 22:33:33 -05:00
Scott Giese
40e5af8d57 VS2019 defaults to x64 2019-09-17 20:37:46 -05:00
Scott Giese
eea7bac1e8 [fg-from-scratch]
Auto detect Qt5 install path
Auto detect latest VS version
Upgrade to OSG 3.6
Organize folder structure
2019-09-16 23:50:35 -05:00
Julian Smith
a5e4c47f1d download_and_compile.sh: improved generation of run_fgfs*.sh scripts.
Use common code for run_fgfs.sh and run_fgfs_debug.sh. If OpenBSD, also add a
ulimit -d command to increase data segment size.
2019-09-04 13:35:30 +01:00
Julian Smith
9804df24a1 download_and_compile.sh: Added support for building fgfs on OpenBSD.
Added support for building zlib, because current openbsd-6.5's zlib is too old.

If OpenBSD:
    Default to not attempting to update or download packages - for now packages
    have to be installed manually with pkg_add.

    Use gnugetopt.

    Use ZLIB build for simgear and fgfs.

    For fgfs, use -DENABLE_QT=OFF -DENABLE_FGCOM=OFF.

    For run_fgfs_debug.sh, use egdb because default gdb is too old.
2019-09-04 13:34:27 +01:00
Florent Rougon
bad115cac0 download_and_compile.sh: add libopenal-dev as mandatory dependency of SimGear
Thanks to Clm76 for the report.
2019-07-06 12:19:42 +02:00
Florent Rougon
696829a260 download_and_compile.sh: add optional dependency on libevent-dev
This is needed for swift support (thanks to wkitty42 for the report).
2019-05-25 21:28:36 +02:00
James Turner
09cc52296d Put compositor back off for now
Need to figure out a way to handle it as another binary build, since
there is no runtime configuration option.
2019-05-24 13:55:59 +01:00
James Turner
abc616b548 Enable Swift in nightly builds 2019-05-24 09:31:51 +01:00
James Turner
c3b9b9a524 Enable compositor in nightly builds 2019-05-23 12:38:02 +01:00
James Turner
2277ba38c7 Fix a typo in DBus installer spec 2019-05-23 11:02:10 +01:00
Lars Toenning
97a72b4934 Add swift dlls to installer script 2019-05-17 10:54:29 +02:00
Florent Rougon
ecd4b9aab3 download_and_compile.sh: fix path in generated default TerraGearGUI.conf
The 'flightgear' path in ~/.config/TerraGear/TerraGearGUI.conf is
supposed to point to $FG_ROOT, not to the FlightGear repository...
2019-05-02 01:36:00 +02:00
Florent Rougon
882ab6ae59 download_and_compile.sh: small fixes for TerraGear and TerraGear GUI
- make all generated scripts executable;
- use correct path for 'terragear' in the generated default config file
  ~/.config/TerraGear/TerraGearGUI.conf (not the 'bin' subdirectory);
- add default for the 'flightgear' path in the same file;
- don't write temporary TerraGearGUI.conf in $CBD (it's useless and
  might overwrite a user-created file);
- simplify a bit (esp. using a here document for generating
  run_terrageargui.sh).
2019-04-29 22:28:21 +02:00
Florent Rougon
f3423dba60 download_and_compile.sh: respect the selected build type for TerraGear
So far, TerraGear was always built by d&c with
-DCMAKE_BUILD_TYPE="Debug". Following [1], d&c will now use, for
TerraGear, the build type selected with its -b option---which by default
is 'RelWithDebInfo'.

(In short: the 'Debug' build type has a very high negative performance
impact, therefore it should only be done intentionally.)

[1] https://sourceforge.net/p/flightgear/mailman/message/36650766/
2019-04-26 23:01:58 +02:00
Florent Rougon
39c1754a7f download_and_compile.sh: improve management of intercomponent dependencies
- new function _depends() to allow declaring intercomponent dependencies
  using a declarative style;

- declare that FGFS depends on SIMGEAR (TERRAGEAR depends on SIMGEAR as
  well, but this was already there---just not in the new, declarative
  style);

- print and log automatically-added components; when this happens, give
  a hint about --ignore-intercomponent-deps;

- log the value of IGNORE_INTERCOMPONENT_DEPS, which reflects whether
  --ignore-intercomponent-deps was used.
2019-04-26 13:14:38 +02:00
Florent Rougon
f190773790 download_and_compile.sh: use proper string comparison in _elementIn()
In Bash, the [[ <foo> == <bar> ]] and [[ <foo> = <bar> ]] conditionals
interpret <bar> as a shell globbing pattern. This wasn't desired in
_elementIn(), where the <bar> string is provided by the caller, and
might contain pattern metacharacters. Replace this conditional with a
plain string comparison made with '[' (aka, the 'test' command).
2019-04-26 10:44:03 +02:00
Florent Rougon
5b34458439 download_and_compile.sh: add option --ignore-intercomponent-deps
Add option --ignore-intercomponent-deps which does the following:

  Ignore dependencies between components (default: don't).

  Example: TERRAGEAR depends on SIMGEAR. Because of this, running
  'download_and_compile.sh TERRAGEAR' would normally update, rebuild,
  etc. both SIMGEAR and TERRAGEAR. Passing the
  --ignore-intercomponent-deps option can be useful if you want to
  update, rebuild, etc. TERRAGEAR *without* doing the same for SIMGEAR
  (for instance, if you are doing repeated TERRAGEAR builds and you know
  your SIMGEAR is already fine and up-to-date).
2019-04-26 10:30:45 +02:00
Florent Rougon
59c9a55baa download_and_compile.sh: log whether this is a "stable build"
Log "Stable build: yes" or "Stable build: no" depending on whether
option -s has been passed.
2019-04-26 09:29:50 +02:00
Florent Rougon
92f566f1d3 download_and_compile.sh: fix "TERRAGEAR depends on SIMGEAR" implementation
The previous commit enforced this dependency only under the
[[ "$DOWNLOAD_PACKAGES" = "y" ]] condition, which was too restrictive.
2019-04-26 09:25:59 +02:00
Florent Rougon
5b6ba959d9 download_and_compile.sh: update TerraGear dependencies and branch selection
- update dependencies of the TERRAGEAR component (require SimGear,
  libboost-dev and zlib1g-dev apart from what was already listed
  following [0]);

- use TerraGear branch 'scenery/ws2.0' if the -s option has been given,
  otherwise use the 'next' branch.

References: [1] and Scott's reply[2].

[0] 6661d1e10c/
[1] https://sourceforge.net/p/flightgear/mailman/message/36649774/
[2] https://sourceforge.net/p/flightgear/mailman/message/36650028/
2019-04-26 08:40:59 +02:00
Florent Rougon
675e7e6bdc download_and_compile.sh: new generated script: run_ldd.sh
This script can be useful to debug library problems.

$ ./run_ldd.sh --help
Usage: ./run_ldd.sh LDD_ARGUMENT...
Run 'ldd' with the same LD_LIBRARY_PATH setup as done inside run_fgfs.sh.

Examples: 'run_ldd.sh fgfs', 'run_ldd.sh fgcom', etc. (this can be used
for any binary in 'install/flightgear/bin').
2019-04-25 08:29:23 +02:00
Florent Rougon
07d1b0e882 download_and_compile.sh: update warning message 2019-04-24 19:18:57 +02:00
Florent Rougon
f826f8c4b2 download_and_compile.sh: remove useless parameter in URL 2019-04-24 18:56:42 +02:00
Florent Rougon
82f3c85343 download_and_compile.sh: allow setting SG_CMAKEARGS and FG_CMAKEARGS from the environment
This allows one to add custom CMake options for the SG and/or FG
build(s) without modifying download_and_compile.sh.
2019-04-24 18:50:50 +02:00
Florent Rougon
3344c21c71 download_and_compile.sh: add quoting to the generated scripts
run_fgfs.sh and run_fgfs_debug.sh have been tested: now they work fine
when run from a directory whose path contains spaces.

The other scripts have been quickly updated, because the problems were
quite similar, but these haven't been tested (the FGo! startup script
had useless stuff, the FGx one had very weird things like "cd $ " which
probably had not been tested).
2019-04-21 13:37:35 +02:00
Florent Rougon
b2274fbbed download_and_compile.sh: pass -DTRANSLATIONS_SRC_DIR when building FlightGear
When configuring FlightGear, flightgear/CMakeModules/Translations.cmake
checks for the presence of "${FGDATA_SRC_DIR}/Translations/${xlf_file}"
where ${xlf_file} is en_US/FlightGear-Qt.xlf, however this
${FGDATA_SRC_DIR} is *not* initialized from -DFG_DATA_DIR argument
passed on FlightGear's cmake command. The autodetection only works if
FGData is located in ../fgdata from the FlightGear source directory. In
the meantime, make download_and_compile.sh explicitly pass
-DTRANSLATIONS_SRC_DIR:PATH when configuring FG.

The -DFG_DATA_DIR:PATH vs. -DFG_DATA_DIR change is visible in
build/flightgear/CMakeCache.txt but not decisive here.
2019-04-21 11:45:28 +02:00
Florent Rougon
cd80fffbe2 download_and_compile.sh: add quoting around variable expansions
Should behave better in case one of these variables contains whitespace.

Note: I didn't look inside the generated scripts such as run_fgfs.sh,
      they may have similar issues.
2019-04-21 08:39:34 +02:00
Florent Rougon
5e25bc9277 download_and_compile.sh: don't attempt to install libcppunit-dev anymore
According to Edward, installing the system CppUnit library is not really
useful and likely to cause problems.[1]

This reverts commit 6caf43f9e7.

[1] https://sourceforge.net/p/flightgear/mailman/message/36636483/
2019-04-11 10:34:29 +02:00
Florent Rougon
06d84d1d5b download_and_compile.sh: don't install CMake from distro package when we build it
Don't install the 'cmake' distro package when the CMAKE component has
been selected.
2019-04-09 10:34:39 +02:00
Florent Rougon
6661d1e10c download_and_compile.sh: only install dependencies for selected components
For instance, don't attempt to install TerraGear dependencies unless
TERRAGEAR is in WHATTOBUILD. This should significantly reduce the number
of packages downloaded by the first use of download_and_compile.sh that
doesn't have -pn in the options.

We may get reports of missing dependencies for some components as a side
effect of this change; we'll just have to add the missing dependencies
wherever they are required (this can happen if, for instance, some
particular dependency was so far listed in the comments only as a
TERRAGEAR dependency, but was actually required by *another component*
such as FGFS). Incorrect dependency information needs to be fixed,
that's all there is to it.
2019-04-09 10:34:30 +02:00
Florent Rougon
6caf43f9e7 download_and_compile.sh: add optional dependency on libcppunit-dev
The dependency is optional because CppUnit is shipped with the FG
sources. However, when installed via the distro package manager as we
are attempting here:
  - the FG build will be quicker;
  - libcppunit-dev will be updated like other distro packages (e.g.,
    it will receive security updates).
2019-04-09 09:40:28 +02:00
chris_blues
7b51c99439 FGmeta/Nasa2FGearthview
-----------------------
* merge contribution of eatdirt <chris@ringeval.com>
  add download, conversion and generation of normalmaps
  Big thanks Chris!
* update README and some minor updates to the script
2019-03-25 18:20:43 +01:00
Florent Rougon
1cf284bd6f download_and_compile.sh: add optional dependency on qttools5-dev
This package is needed to embed translations in the built-in launcher
(it contains Qt5LinguistToolsConfig.cmake). Thanks to Clm76 for the
feedback.
2019-03-25 11:09:13 +01:00
Florent Rougon
1f27f8e39a download_and_compile.sh: create openscenegraph dir only when OSG build is enabled
Dont create the 'openscenegraph' directory when the OSG build is
not selected (request from user ctesc356 of the French forum).
2019-03-23 14:34:51 +01:00
Torsten Dreyer
caaad41e26 track submodule changes for release 2019-03-13 21:21:07 +01:00
Torsten Dreyer
120055fa43 new version: 2019.2.0 2019-03-13 21:21:07 +01:00
42 changed files with 2035 additions and 650 deletions

8
.gitmodules vendored
View File

@@ -1,11 +1,11 @@
[submodule "simgear"]
path = simgear
url = ../simgear
branch = next
branch = release/2020.1
[submodule "flightgear"]
path = flightgear
url = ../flightgear
branch = next
branch = release/2020.1
[submodule "fgrun"]
path = fgrun
url = ../fgrun
@@ -13,7 +13,7 @@
[submodule "fgdata"]
path = fgdata
url = ../fgdata
branch = next
branch = release/2020.1
[submodule "windows-3rd-party"]
path = windows-3rd-party
url = ../windows-3rd-party
@@ -21,4 +21,4 @@
[submodule "getstart"]
path = getstart
url = ../getstart
branch = next
branch = release/2020.1

View File

@@ -21,10 +21,12 @@
#include "InstallConfig.iss"
#define InstallDir32 "X:\install\msvc140"
#define InstallCompositor32 "X:\install\msvc140\compositor"
#define OSGInstallDir InstallDir32 + "\OpenSceneGraph"
#define OSGPluginsDir OSGInstallDir + "\bin\osgPlugins-" + OSGVersion
#define InstallDir64 "X:\install\msvc140-64"
#define InstallCompositor64 "X:\install\msvc140-64\compositor"
#define OSG64InstallDir InstallDir64 + "\OpenSceneGraph"
#define OSG64PluginsDir OSG64InstallDir + "\bin\osgPlugins-" + OSGVersion
@@ -74,6 +76,7 @@ Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "A
; 32 bits install
Source: "{#InstallDir32}\bin\*.*"; DestDir: "{app}\bin"; Excludes: "{#ExcludedBinaries}"; Flags: ignoreversion recursesubdirs; Check: not Is64BitInstallMode
Source: "{#InstallCompositor32}\bin\fgfs.exe"; DestDir: "{app}\bin"; DestName: "fgfs-compositor.exe"; Excludes: "{#ExcludedBinaries}"; Flags: ignoreversion recursesubdirs; Check: not Is64BitInstallMode
;locale only exists for fgrun - which has been disabled
;Source: "{#InstallDir32}\share\locale\*"; DestDir: "{app}\bin\locale"; Flags: ignoreversion recursesubdirs; Check: not Is64BitInstallMode
@@ -82,12 +85,14 @@ Source: "{#ThirdPartyDir}\3rdParty\bin\OpenAL32.dll"; DestDir: "{app}\bin"; Chec
Source: "{#ThirdPartyDir}\3rdParty\bin\libpng.dll"; DestDir: "{app}\bin"; Check: not Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty\bin\libcurl.dll"; DestDir: "{app}\bin"; Check: not Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty\bin\libintl-8.dll"; DestDir: "{app}\bin"; Check: not Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty\bin\CrashRpt1403.dll"; DestDir: "{app}\bin"; Check: not Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty\bin\crashrpt_lang.ini"; DestDir: "{app}\bin"; Check: not Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty\bin\CrashSender1403.exe"; DestDir: "{app}\bin"; Check: not Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty\bin\sentry.dll"; DestDir: "{app}\bin"; Check: not Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty\bin\crashpad_handler.exe"; DestDir: "{app}\bin"; Check: not Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty\bin\dbus-1-3.dll"; DestDir: "{app}\bin"; Check: not Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty\bin\event_core.dll"; DestDir: "{app}\bin"; Check: not Is64BitInstallMode
; 64 bits install
Source: "{#InstallDir64}\bin\*.*"; DestDir: "{app}\bin"; Excludes: "{#ExcludedBinaries}"; Flags: ignoreversion recursesubdirs; Check: Is64BitInstallMode
Source: "{#InstallCompositor64}\bin\fgfs.exe"; DestDir: "{app}\bin"; DestName: "fgfs-compositor.exe"; Excludes: "{#ExcludedBinaries}"; Flags: ignoreversion recursesubdirs; Check: Is64BitInstallMode
;locale only exists for fgrun - which has been disabled
;Source: "{#InstallDir64}\share\locale\*"; DestDir: "{app}\bin\locale"; Flags: ignoreversion recursesubdirs; Check: Is64BitInstallMode
@@ -96,9 +101,10 @@ Source: "{#ThirdPartyDir}\3rdParty.x64\bin\OpenAL32.dll"; DestDir: "{app}\bin";
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\libpng.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\libcurl.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\libintl-8.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\CrashRpt1403.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\crashrpt_lang.ini"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\CrashSender1403.exe"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\sentry.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\crashpad_handler.exe"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\dbus-1-3.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
Source: "{#ThirdPartyDir}\3rdParty.x64\bin\event_core.dll"; DestDir: "{app}\bin"; Check: Is64BitInstallMode
; Include the base package
#if IncludeData == "TRUE"
@@ -190,6 +196,7 @@ Name: "{userdocs}\FlightGear\Custom Scenery"; Permissions: everyone-modify; Chec
[Icons]
Name: "{userdesktop}\FlightGear {#FGVersion}"; Filename: "{app}\bin\fgfs.exe"; Parameters: "--launcher"; WorkingDir: "{app}\bin"; Tasks: desktopicon;
Name: "{group}\FlightGear"; Filename: "{app}\bin\fgfs.exe"; Parameters: "--launcher"; WorkingDir: "{app}\bin";
Name: "{group}\FlightGear - Compositor"; Filename: "{app}\bin\fgfs-compositor.exe"; Parameters: "--launcher"; WorkingDir: "{app}\bin";
Name: "{group}\FlightGear Manual"; Filename: "{app}\data\Docs\getstart.pdf"
Name: "{group}\FlightGear Documentation"; Filename: "{app}\data\Docs\index.html"
Name: "{group}\Flightgear Wiki"; Filename: "http://wiki.flightgear.org"

View File

@@ -15,7 +15,7 @@
<key>CFBundleExecutable</key>
<string>fgfs</string>
<key>CFBundleIdentifier</key>
<string>org.flightgear.FlightGear</string>
<string><%= fgBundleIdentifier %></string>
<key>CFBundleVersion</key>
<string><%= fgVersion %></string>
<key>CFBundleShortVersionString</key>

View File

@@ -1,96 +1,123 @@
# Nasa2FGearthview
A bash-script to convert NASA satellite images to ready-to-use
textures for FG's EarthView using ImageMagick.
textures for FG's EarthView using ImageMagick and normalmap
For info about FGearthview, see the forum thread:
You can get "normalmap" there:
https://github.com/planrich/normalmap
For info about FGearthview, see the forum thread:\
https://forum.flightgear.org/viewtopic.php?f=6&t=15754
or this FG-wiki-page:
or this FG-wiki-page:\
http://wiki.flightgear.org/Earthview
### Caution!
Don't use this script on a server! It will most likely cause
Denial-of-service (DoS). When working on these huge images, the
harddisk throughput will cease occasionally and CPU / RAM usage will
spike tremendously! So, only use this script on your home desktop
computer, or if you don't mind several long server-outages...
------------------------------------
About:
## About:
This script runs on Linux (maybe Mac also?) in a Bash
(Bourne Again Shell) - Windows is not supported (by the nature of the
script). Maybe it works on windows as well, I don't know, feel free
to try, and please let me know! :)
This will download the raw images from http://visibleearth.nasa.gov -
their server is not very fast, so I provide an alternative download
location: https://musicchris.de/download/FG/EarthView/raw-data-NASA.7z
This one is much quicker! If you really want the images directly from
NASA, then provide "nasa" to the script (see below)
In the end you will have 8 world-textures in .png and .dds format.
Generally .dds is better in performance, but it won't work on some
graphics cards. If this is the case for you, then try the .png files.
For further information see:
For further information see:\
http://wiki.flightgear.org/index.php?title=DDS_Textures_in_FlightGear&redirect=no
If you also converted the clouds, then you'll also find 8 cloud-
textures in the format .png. Because the .dds-format has trouble with
rendering heavy alpha images, which is because of it's compression
algorythm [1], I think it's useless to also build faulty files.
However, this is not entirely true! It is possible to switch off the
.dds/DXT compression. But this results in huge files and is rather
heavy on the GPU's RAM.
If you also converted the clouds and the height maps, then you'll also
find 8 cloud- and 8 height textures (as well as their conversion to
normal maps) in the format .png. Because the .dds-format has trouble
with rendering heavy alpha images, which is because of it's
compression algorythm [1], I think it's useless to also build faulty
files. However, this is not entirely true! It is possible to switch
off the .dds/DXT compression. But this results in huge files and is
rather heavy on the GPU's RAM.
Buckaroo has created a nice overview on dds-compression:
[1] http://www.buckarooshangar.com/flightgear/tut_dds.html
------------------------------------
Installation and usage:
## Installation and usage:
Simply copy "convert.sh" into a folder of your liking and run it:
$ ./convert.sh
```shell
./convert.sh
```
This will show a help text, since you didn't specify any target(s).
Possible targets are:
* world
* clouds
* heights
* all
Additionally, there are some options you could specify (further
explained below):
* 1k | 2k | 4k | 8k | 16k
* nasa
* no-download
* download | no-download
* world
* clouds
* heights
* cleanup
* rebuild
* check
So your call could look sth like this:
$ ./convert.sh world no-download cleanup 8k
```shell
./convert.sh world download alt cleanup 8k
```
------------------------------------
Requirements:
## Requirements:
WARNING!
This script uses a *lot* disk space! Make sure you have at least 90GB
available!
This script uses a *lot* disk space! In my last test run, which
generated all maps in all resolutions, the disk usage was about 330GB!
Beware!\
Also, I wouldn't recommend doing this on a SSD! While SSDs are
generally faster, they also get more wear-and-tear when write such
huge files. So this script might cause your SSD to die earlier as it
should. Generally speaking, this won't kill your SSD, but it might
cause it to die earlier. HDDs are much more robust in that respect.
Also, this script will run for a *very long* time! It might be best to
let it run over night - your computer might become unresponsive from
time to time, due to the heavy CPU and memory load, which tends to
occur, when converting 54000x27000 images. ;-)
I also recommend to deactivate swapping!
$ sudo swapoff -a
To reactivate swapping do:
$ sudo swapon -a
This script relies on wget and imagemagick. Both are easily installed
by your systems package-management-system.
(On Debian/Ubuntu this is "apt-get")
I also recommend to deactivate swapping!
```shell
sudo swapoff -a
```
To reactivate swapping do:
```shell
$ sudo swapon -a
```
This script relies on wget, ImageMagick and, for converting the height
maps to normal maps, on "normalmap". Some of these programs are easily
installed by your systems package-management-system.\ (On
Debian/Ubuntu this is "apt-get").
So, on Debian for instance, you only need to put the following into
the console:
$ sudo apt-get install wget imagemagick
```shell
sudo apt-get install wget imagemagick
```
Depending on your distro, the package names might differ slightly! Use
a search engine of your choice to find out, how the packages are named
@@ -98,70 +125,92 @@ in your distro!
You may want to check:
$ apt search imagemagick
```shell
apt search imagemagick
```
### IMPORTANT!
Check out your ```/etc/ImageMagick-6/policy.xml```
On some distros, there are limits set, which will cause IM to abort
the conversion of images larger than
[rediculously small images](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860763).
Edit and set to our needs:
* width: at least 55000
* height: at least 55000
* area: less than your free RAM
### Normalmap
For normalmap, you can download and compile it from
https://github.com/planrich/normalmap
You can install the binary into your system, or just copy it next to
convert.sh - both should work.
------------------------------------
Targets:
## Targets:
world
Generates the world tiles, needed to run FG with EarthView.
You will find the results in output/[$resolution]/*. Copy
these into $FGDATA/Models/Astro/*. More about the installation
of these textures can be found here:
http://wiki.flightgear.org/Earthview#Customization
**world**\
Generates the world tiles, needed to run FG with EarthView.
You will find the results in output/[$resolution]/\*. Copy
these into $FGDATA/Models/Astro/\*. More about the installation
of these textures can be found here:
http://wiki.flightgear.org/Earthview#Customization
clouds
Generates the cloud tiles, needed to run FG with EarthView.
The locations are the same as the other textures mentioned
above. Note that clouds are only available with up to 8k
resolution, due to the available data at NASA.
**clouds**\
Generates the cloud tiles, needed to run FG with EarthView.
The locations are the same as the other textures mentioned
above. Note that clouds are only available with up to 8k
resolution, due to the available data at NASA.
all
Converts everything needed for a full-blown earthview texture
set. Does the same as:
$ ./convert.sh world clouds
**heights**\
Generates the height tiles, which are then converted to the
normal maps needed to run FG with EarthView. The locations are
the same as the other textures mentioned above. Note that
heights are only available with up to 8k resolution, due to the
available data at NASA.
**all**\
Converts everything needed for a full-blown earthview texture
set. Does the same as:
```./convert.sh world clouds heights```
Options:
## Options:
1k | 2k | 4k | 8k | 16k
Lets you specify a desired resolution of the textures.
Possible values are 1k, 2k, 4k, 8k and 16k. If nothing is
specified, the script will generate all of the resolutions.
16k is only available for earth textures.
**1k | 2k | 4k | 8k | 16k**\
Lets you specify a desired resolution of the textures.
Possible values are 1k, 2k, 4k, 8k and 16k. If nothing is
specified, the script will generate all of the resolutions.
16k is recommended only for earth textures, it will induce
oversampling from clouds and height maps.
nasa
Causes the script to download directly from
http://visibleearth.nasa.gov . If omitted the script will
download from
https://musicchris.de/download/FG/EarthView/raw-data-NASA.7z
which is much faster!
Uses wget either way.
**download**\
Causes the script to download the needed data, this is the
default behavior (and can be omitted).
no-download
Causes the script to skip the download function. If you
already have the source images, then you don't need to
re-download them. (About 2.4GB!)
If omitted, the script will download the source images from
https://musicchris.de/download/FG/EarthView/raw-data-NASA.7z
**no-download**\
Causes the script to skip the download function. If you
already have the source images, then you don't need to
re-download them. (About 2.4GB!)
If omitted, the script will download the source images from
the default location.
cleanup
Deletes the temporary files created during texture generation.
These can be found in tmp/
Note: if for some reason you later want some other resolution,
then it's good to have the data there. So only do this, when
you're quite sure that you're done.
Frees up a lot of disk-space! Which would have to be
regenerated if needed again.
**cleanup**\
Deletes the temporary files created during texture generation.
These can be found in tmp/
Note: if for some reason you later want some other resolution,
then it's good to have the data there. So only do this, when
you're quite sure that you're done.
Frees up a lot of disk-space! Which would have to be
regenerated if needed again.
rebuild
Deletes only the temporary files of the given target. So if
you call './convert.sh rebuild world' the script will delete
all corresponding temp-files of the target world, which will
trigger a complete regeneration of the relevant (instead of
skipping existing files)
**rebuild**\
Deletes only the temporary files of the given target. So if
you call ```./convert.sh rebuild world``` the script will delete
all corresponding temp-files of the target world, which will
trigger a complete regeneration of the relevant (instead of
skipping existing files)
check
Creates mosaics of the tiles, so you can look at them and see
if all went well.
**check**\
Creates mosaics of the tiles, so you can look at them and see
if all went well.

File diff suppressed because it is too large Load Diff

View File

@@ -41,7 +41,7 @@ cp simgear-*.tar.bz2 ../output/.
#####################################################################################
echo "Starting on FlightGear"
cd ../fgBuild
cmake -DCMAKE_INSTALL_PREFIX:PATH=$WORKSPACE/dist -DSIMGEAR_SHARED:BOOL="ON" -DFG_BUILD_TYPE=Release ../flightgear
cmake -DCMAKE_INSTALL_PREFIX:PATH=$WORKSPACE/dist -DSIMGEAR_SHARED:BOOL="ON" -DENABLE_SWIFT:BOOL=ON -DFG_BUILD_TYPE=Release ../flightgear
# compile
make

View File

@@ -20,6 +20,8 @@ SET OSG64=%WORKSPACE%\install\msvc140-64\OpenSceneGraph
REM 32bits
md build-sg32
md build-fg32
md build-fg32-compositor
cd build-sg32
cmake ..\simgear -G "Visual Studio 14" ^
-DMSVC_3RDPARTY_ROOT=%WORKSPACE%/windows-3rd-party/msvc140 ^
@@ -33,11 +35,24 @@ cd ..\build-fg32
cmake ..\flightgear -G "Visual Studio 14" ^
-DMSVC_3RDPARTY_ROOT=%WORKSPACE%/windows-3rd-party/msvc140 ^
-DCMAKE_INSTALL_PREFIX:PATH=%WORKSPACE%/install/msvc140 ^
-DCMAKE_PREFIX_PATH:PATH=%WORKSPACE%/install/msvc140/OpenSceneGraph ^
-DBOOST_ROOT=%WORKSPACE%/windows-3rd-party ^
-DOSG_FSTREAM_EXPORT_FIXED=1 ^
-DCMAKE_PREFIX_PATH=%QT5SDK32%;%OSG32% ^
-DFG_BUILD_TYPE=%FGBUILDTYPE%
-DFG_BUILD_TYPE=%FGBUILDTYPE% ^
-DENABLE_SWIFT:BOOL=ON ^
-DENABLE_COMPOSITOR:BOOL=OFF
cmake --build . --config RelWithDebInfo --target INSTALL
cd ..\build-fg32-compositor
cmake ..\flightgear -G "Visual Studio 14" ^
-DMSVC_3RDPARTY_ROOT=%WORKSPACE%/windows-3rd-party/msvc140 ^
-DCMAKE_INSTALL_PREFIX:PATH=%WORKSPACE%/install/msvc140/compositor ^
-DCMAKE_PREFIX_PATH:PATH=%QT5SDK32%;%OSG32%;%WORKSPACE%/install/msvc140/ ^
-DBOOST_ROOT=%WORKSPACE%/windows-3rd-party ^
-DOSG_FSTREAM_EXPORT_FIXED=1 ^
-DFG_BUILD_TYPE=%FGBUILDTYPE% ^
-DENABLE_SWIFT:BOOL=ON ^
-DENABLE_COMPOSITOR:BOOL=ON
cmake --build . --config RelWithDebInfo --target INSTALL
cd ..
@@ -45,6 +60,7 @@ cd ..
REM 64 bits
md build-sg64
md build-fg64
md build-fg64-compositor
cd build-sg64
cmake ..\SimGear -G "Visual Studio 14 Win64" ^
@@ -62,15 +78,30 @@ cmake ..\flightgear -G "Visual Studio 14 Win64" ^
-DCMAKE_INSTALL_PREFIX:PATH=%WORKSPACE%/install/msvc140-64 ^
-DCMAKE_PREFIX_PATH=%QT5SDK64%;%OSG64% ^
-DOSG_FSTREAM_EXPORT_FIXED=1 ^
-DFG_BUILD_TYPE=%FGBUILDTYPE%
-DFG_BUILD_TYPE=%FGBUILDTYPE% ^
-DENABLE_SWIFT:BOOL=ON ^
-DENABLE_COMPOSITOR:BOOL=OFF
cmake --build . --config RelWithDebInfo --target INSTALL
cd ..\build-fg64-compositor
cmake ..\flightgear -G "Visual Studio 14 Win64" ^
-DMSVC_3RDPARTY_ROOT=%WORKSPACE%/windows-3rd-party/msvc140 ^
-DBOOST_ROOT=%WORKSPACE%/windows-3rd-party ^
-DCMAKE_INSTALL_PREFIX:PATH=%WORKSPACE%/install/msvc140-64/compositor ^
-DCMAKE_PREFIX_PATH=%QT5SDK64%;%OSG64%;%WORKSPACE%/install/msvc140-64/ ^
-DOSG_FSTREAM_EXPORT_FIXED=1 ^
-DFG_BUILD_TYPE=%FGBUILDTYPE% ^
-DENABLE_SWIFT:BOOL=ON ^
-DENABLE_COMPOSITOR:BOOL=ON
cmake --build . --config RelWithDebInfo --target INSTALL
cd ..
REM Qt5 deployment
SET QMLDIR=%WORKSPACE%/flightgear/src/GUI/qml
%QT5SDK32%\bin\windeployqt --release --list target --qmldir %QMLDIR% %WORKSPACE%/install/msvc140/bin/fgfs.exe
%QT5SDK32%\bin\windeployqt --release --list target --qmldir %QMLDIR% %WORKSPACE%/install/msvc140/compositor/bin/fgfs.exe
%QT5SDK64%\bin\windeployqt --release --list target --qmldir %QMLDIR% %WORKSPACE%/install/msvc140-64/bin/fgfs.exe
%QT5SDK64%\bin\windeployqt --release --list target --qmldir %QMLDIR% %WORKSPACE%/install/msvc140-64/compositor/bin/fgfs.exe
REM build setup
ECHO Packaging root is %WORKSPACE%
@@ -81,14 +112,16 @@ subst X: %WORKSPACE%.
REM ensure output dir is clean since we upload the entirety of it
rmdir /S /Q output
SET CRASHFIX_UPLOAD_URL=http://crashes.flightgear.org/index.php/debugInfo/uploadExternal
SET FGFS_PDB=src\Main\RelWithDebInfo\fgfs.pdb
ECHO Uploading PDB files to %CRASHFIX_UPLOAD_URL%
upload -v -u %CRASHFIX_UPLOAD_URL% FlightGear %WORKSPACE%\build-fg32\%FGFS_PDB% %WORKSPACE%\build-fg64\%FGFS_PDB%
REM also save the PDB to Output\ so they get uploaded
copy %WORKSPACE%\build-fg64\%FGFS_PDB% %WORKSPACE%\Output\fgfs_64.pdb
copy %WORKSPACE%\build-fg32\%FGFS_PDB% %WORKSPACE%\Output\fgfs_32.pdb
SET SENTRY_ORG=flightgear
SET SENTRY_PROJECT=flightgear
REM ensure SENTRY_AUTH_TOKEN is set in the environment
sentry-cli upload-dif %WORKSPACE%\build-fg32\%FGFS_PDB%
sentry-cli upload-dif %WORKSPACE%\build-fg64\%FGFS_PDB%
sentry-cli upload-dif %WORKSPACE%\build-fg32-compositor\%FGFS_PDB%
sentry-cli upload-dif %WORKSPACE%\build-fg64-compositor\%FGFS_PDB%
REM indirect way to get command output into an environment variable
set PATH=%OSG32%\bin;%PATH%

63
catalog/README.md Normal file
View File

@@ -0,0 +1,63 @@
Introduction
============
This is the directory containing the script for updating aircraft, or other
craft, catalogs. It will create the `catalog.xml` file used to add a hangar to
FlightGear, as well as the zip archives of each craft in the hangar and the
md5sums, thumbnails, and previews of these. It consists of the script:
* update-catalog.py
And its Python modules:
* catalog.py
* catalogTags.py
* sgprogs.py
Usage
=====
The script can be run directly from this directory, or the script and its
modules can be copied together and run from any location. The steps to use
these are:
* Create an output directory where the catalog and zip files will be located.
* Copy the configuration files `catalog.config.xml`, `template.xml`, and
`zip-excludes.lst` from one of the `*catalog*` example directories into the
output directory.
* Modify these files as required.
Then run the script with:
`$ $FGMETA/catalog/update-catalog.py dir`
where `dir` is the output directory. The script will create the following
files:
* `md5sum.xml`: A file containing checksums of all craft zip archives in the
base output directory.
* `ftp/catalog.xml`: The XML catalog to upload to a server and advertise to
FlightGear users.
* `ftp/*.zip`: The zip archives of each craft in the hangar.
* `ftp/previews/*_Splashs/`: A directory per craft containing the splash screen
graphics.
* `ftp/thumbnails/`: The collection of thumbnail graphics for the hangar.
The `ftp` directory is to be uploaded to a server which can be configured via
the `catalog.config.xml` file.
Examples
========
A number of example configuration files are located in this directory. These
include:
* `fgaddon-catalog/`: The configuration files used for the [official FGAddon
hangar](http://wiki.flightgear.org/FGAddon).
* `stable-2018-catalog/': The configuration files used for the 2018 long term
stability release.
* `single-craft-catalog-test/`: Configuration files used for testing the
catalog and zip archive creation for a single craft. These are for content
developers to test their craft.

View File

@@ -2,18 +2,29 @@
import argparse
import datetime
#import xml.etree.cElementTree as ET
from fnmatch import fnmatch, translate
import lxml.etree as ET
import os
from os.path import exists, join, relpath
from os import F_OK, access, walk
import re
import sgprops
import sys
import catalogTags
import zipfile
CATALOG_VERSION = 4
quiet = False
verbose = False
# The Python version.
PY_VERSION = sys.version_info[0]
# Python 2 and 3 compatibility.
if PY_VERSION == 3:
long = int
def warning(msg):
if not quiet:
print(msg)
@@ -101,7 +112,7 @@ def scan_set_file(aircraft_dir, set_file, includes):
if sim_node.hasChild('minimum-fg-version'):
variant['minimum-fg-version'] = sim_node.getValue('minimum-fg-version', None)
#print ' ', variant
#print(" %s" % variant)
return variant
def extract_previews(previews_node, aircraft_dir):
@@ -140,13 +151,13 @@ def scan_aircraft_dir(aircraft_dir, includes):
files = os.listdir(aircraft_dir)
for file in sorted(files, key=lambda s: s.lower()):
if file.endswith('-set.xml'):
# print 'trying:', file
# print('trying: %s' % file)
try:
d = scan_set_file(aircraft_dir, file, includes)
if d == None:
continue
except:
print "Skipping set file since couldn't be parsed:", os.path.join(aircraft_dir, file), sys.exc_info()[0]
print("Skipping set file since couldn't be parsed: %s %s" % os.path.join(aircraft_dir, file), sys.exc_info()[0])
continue
setDicts.append(d)
@@ -156,13 +167,13 @@ def scan_aircraft_dir(aircraft_dir, includes):
elif d['variant-of'] == None:
primaryAircraft.append(d)
# print setDicts
# print(setDicts)
if len(setDicts) == 0:
return None, None
# use the first one
if len(primaryAircraft) == 0:
print "Aircraft has no primary aircraft at all:", aircraft_dir
print("Aircraft has no primary aircraft at all: %s" % aircraft_dir)
primaryAircraft = [setDicts[0]]
package = primaryAircraft[0]
@@ -214,8 +225,8 @@ def append_author_nodes(node, info):
node.append( make_xml_leaf('author', info['author']) )
def make_aircraft_node(aircraftDirName, package, variants, downloadBase, mirrors):
#print "package:", package
#print "variants:", variants
#print("package: %s" % package)
#print("variants: %s" % variants)
package_node = ET.Element('package')
package_node.append( make_xml_leaf('name', package['name']) )
package_node.append( make_xml_leaf('status', package['status']) )
@@ -286,3 +297,134 @@ def make_aircraft_node(aircraftDirName, package, variants, downloadBase, mirrors
package_node.append(package['urls']._createXMLElement())
return package_node
def make_aircraft_zip(repo_path, craft_name, zip_file, global_zip_excludes, verbose=True):
"""Create a zip archive of the given aircraft."""
# Printout.
if verbose:
print("Zip file creation: %s.zip" % craft_name)
# Go to the directory of crafts to catalog.
savedir = os.getcwd()
os.chdir(repo_path)
# Clear out the old file.
if exists(zip_file):
os.remove(zip_file)
# Use the Python zipfile module to create the zip file.
zip_handle = zipfile.ZipFile(zip_file, 'w', zipfile.ZIP_DEFLATED)
# Find a per-craft exclude list.
craft_path = join(repo_path, craft_name)
exclude_file = join(craft_path, 'zip-excludes.lst')
if exists(exclude_file):
if verbose:
print("Found the craft specific exclusion list '%s'" % exclude_file)
# Otherwise use the catalog default exclusion list.
else:
exclude_file = global_zip_excludes
# Process the exclusion list and find all matching file names.
blacklist = fetch_zip_exclude_list(craft_name, craft_path, exclude_file)
# Walk over all craft files.
print_format = " %-30s '%s'"
for root, dirs, files in walk(craft_path):
# Loop over the files.
for file in files:
# The directory and relative and absolute paths.
dir = relpath(root, start=repo_path)
full_path = join(root, file)
rel_path = relpath(full_path, start=repo_path)
# Skip blacklist files or directories.
skip = False
if file == 'zip-excludes.lst':
if verbose:
print(print_format % ("Skipping the file:", join(dir, 'zip-excludes.lst')))
skip = True
if dir in blacklist:
if verbose:
print(print_format % ("Skipping the file:", join(dir, file)))
skip = True
for name in blacklist:
if fnmatch(rel_path, name):
if verbose:
print(print_format % ("Skipping the file:", rel_path))
skip = True
break
if skip:
continue
# Otherwise add the file.
zip_handle.write(rel_path)
# Clean up.
os.chdir(savedir)
zip_handle.close()
def fetch_zip_exclude_list(name, path, exclude_path):
"""Use Unix style path regular expression to find all files to exclude."""
# Init.
blacklist = []
file = open(exclude_path)
exclude_list = file.readlines()
file.close()
old_path = os.getcwd()
os.chdir(path)
# Process each exclusion path or regular expression, converting to Python RE objects.
reobj_list = []
for i in range(len(exclude_list)):
reobj_list.append(re.compile(translate(exclude_list[i].strip())))
# Recursively loop over all files, finding the ones to exclude.
for root, dirs, files in walk(path):
for file in files:
full_path = join(root, file)
rel_path = join(name, relpath(full_path, start=path))
# Skip Unix shell-style wildcard matches
for i in range(len(reobj_list)):
if reobj_list[i].match(rel_path):
blacklist.append(rel_path)
break
# Return to the original path.
os.chdir(old_path)
# Return the list.
return blacklist
def parse_config_file(parser=None, file_name=None):
"""Test and parse the catalog configuration file."""
# Check for the file.
if not access(file_name, F_OK):
print("CatalogError: The catalog configuration file '%s' cannot be found." % file_name)
sys.exit(1)
# Parse the XML and return the root node.
config = ET.parse(file_name, parser)
return config.getroot()
def parse_template_file(parser=None, file_name=None):
"""Test and parse the catalog configuration file."""
# Check for the file.
if not access(file_name, F_OK):
print("CatalogError: The catalog template file '%s' cannot be found." % file_name)
sys.exit(1)
# Parse the XML and return the template node.
template = ET.parse(file_name, parser)
template_root = template.getroot()
return template_root.find('template')

View File

@@ -11,12 +11,16 @@ aircraftTypeTags = [
"glider",
"groundvehicle",
"helicopter",
"interceptor",
"passenger",
"racer",
"spaceship",
"tanker",
"trainer",
"transport",
"ultralight",
"unpowered",
"uav",
"reconnaissance",
"seacraft",
"crop-duster",
@@ -26,8 +30,10 @@ aircraftTypeTags = [
manufacturerTags = [
"airbus",
"antonov",
"arado",
"atr",
"avro",
"bae",
"bell",
"bleriot",
"boeing",
@@ -53,6 +59,7 @@ manufacturerTags = [
"heinkel",
"ilyushin",
"junkers",
"kawasaki",
"lockheed",
"mc-donnell-douglas",
"messerschmitt",
@@ -64,6 +71,7 @@ manufacturerTags = [
"piper",
"republic",
"robin",
"rockwell",
"saab",
"short",
"sopwith",
@@ -73,6 +81,7 @@ manufacturerTags = [
"tupolev",
"vickers",
"vought",
"wright",
"yakovlev"
]
@@ -105,6 +114,7 @@ featureTags = [
"biplane",
"canard",
"castering-wheel",
"combat",
"delta",
"etops",
"experimental",
@@ -112,10 +122,14 @@ featureTags = [
"fixed-gear",
"floats",
"glass-cockpit",
"low-wing",
"mid-wing",
"high-wing",
"h-tail",
"hud",
"ifr",
"lifting-body",
"pressurised",
"prototype",
"refuel",
"retractable-gear",
@@ -123,15 +137,18 @@ featureTags = [
"skis",
"stol",
"supersonic",
"supercharger",
"t-tail",
"tail-dragger",
"tricycle",
"tail-hook",
"triplane",
"twin-boom",
"v-tail",
"variable-geometry",
"vtol",
"wing-fold"
"water-drop"
]
propulsionTags = [
@@ -147,6 +164,7 @@ propulsionTags = [
"supercharged",
"turboprop",
"twin-engine",
"four-engine",
"variable-pitch",
"fixed-pitch"
]

View File

@@ -3,9 +3,11 @@
<local-output>/home/fgaddon/output/Aircraft-trunk</local-output>
<download-url n="0">http://mirrors.ibiblio.org/flightgear/ftp/Aircraft-trunk/</download-url>
<download-url n="1">http://ukmirror.flightgear.org/fgaddon/Aircraft-trunk/</download-url>
<download-url n="2">https://cdn.merspieler.tk/fgaddon/Aircraft-trunk/</download-url>
<thumbnail-url n="0">http://mirrors.ibiblio.org/flightgear/ftp/Aircraft-trunk/thumbnails</thumbnail-url>
<thumbnail-url n="1">http://ukmirror.flightgear.org/fgaddon/Aircraft-trunk/thumbnails</thumbnail-url>
<thumbnail-url n="2">https://cdn.merspieler.tk/fgaddon/Aircraft-trunk/thumbnails</thumbnail-url>
<scm>
<type>svn</type>

View File

@@ -1,5 +1,11 @@
*/.svn/*
*.xcf
*.blend
*.xcf*
*.XCF*
*.blend*
*.psd
*~
*/dev/*
*/Dev/*
*/development/*
*/src/*
*/Resources/*

View File

@@ -1,5 +1,11 @@
*/.svn/*
*.xcf
*.blend
*.xcf*
*.XCF*
*.blend*
*.psd
*~
*/dev/*
*/Dev/*
*/development/*
*/src/*
*/Resources/*

View File

@@ -119,7 +119,7 @@ class Node(object):
# value and type specification
try:
if self._value is not None:
if isinstance(self._value, basestring):
if isinstance(self._value, str):
# don't call str() on strings, breaks the
# encoding
n.text = self._value
@@ -133,9 +133,9 @@ class Node(object):
elif isinstance(self._value, bool):
n.set('type', "bool")
except UnicodeEncodeError:
print "Encoding error with", self._value, type(self._value)
print("Encoding error with %s %s" % (self._value, type(self._value)))
except:
print "Some other exceptiong in sgprops._createXMLElement()"
print("Unexpected exception in sgprops._createXMLElement():", sys.exc_info()[0])
# index in parent
if (self.index != 0):
@@ -194,7 +194,7 @@ class PropsHandler(handler.ContentHandler):
try:
index = int(attrs['n'])
except:
print "Invalid index at line:", self._locator.getLineNumber(), "of", self._path
print("Invalid index at line: %s of %s" % (self._locator.getLineNumber(), self._path))
raise IndexError("Invalid index at line:", self._locator.getLineNumber(), "of", self._path)
currentState.recordExplicitIndex(name, index)
@@ -251,7 +251,7 @@ class PropsHandler(handler.ContentHandler):
self._content = self._content[:-1]
self._current.value = float(self._content)
except:
print "Parse error for value:", self._content, "at line:", self._locator.getLineNumber(), "of:", self._path
print("Parse error for value: %s at line: %s of: %s" % (self._content, self._locator.getLineNumber(), self._path))
self._current = self._current.parent
self._content = None

View File

@@ -0,0 +1,6 @@
Configuration files for testing the catalog updating script on a single aircraft. This is useful for seeing what will be packed into the zip archive. To use these:
* Copy all *.xml and *.lst files into a local testing directory X.
* Modify the *.xml files:
* Replace all instances of '/data/fgaddon_catalog_p51d/' with the directory X.
* Update any other tags as necessary.

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--Template catalog - copy and modify for your site as required-->
<PropertyList>
<local-output>/data/fgaddon-catalog_p51d/ftp</local-output>
<download-url n="0">/data/fgaddon-catalog_p51d/ftp/Aircraft/</download-url>
<scm>
<type>svn</type>
<update type="bool">false</update>
<path>/flightgear/flightgear-fgaddon/Aircraft</path>
<include>p51d</include>
</scm>
</PropertyList>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--Template catalog - copy and modify for your site as required-->
<PropertyList>
<template>
<version n="0">HEAD</version>
<id>localhost</id>
<license>GPL</license>
<url>/data/fgaddon-catalog_p51d/ftp/Aircraft/catalog.xml</url>
<name>p51d FGAddon aircraft test</name>
<description>This is a test of the catalog updating script to allow aircraft authors to see what will be present in the zip archive of their aircraft.</description>
</template>
</PropertyList>

View File

@@ -0,0 +1,11 @@
*/.svn/*
*.xcf*
*.XCF*
*.blend*
*.psd
*~
*/dev/*
*/Dev/*
*/development/*
*/src/*
*/Resources/*

View File

@@ -4,9 +4,11 @@
<local-output>/home/fgaddon/output/Aircraft-2018</local-output>
<download-url n="0">http://mirrors.ibiblio.org/flightgear/ftp/Aircraft-2018/</download-url>
<download-url n="1">http://ukmirror.flightgear.org/fgaddon/Aircraft-2018/</download-url>
<download-url n="2">https://cdn.merspieler.tk/fgaddon/Aircraft-2018/</download-url>
<thumbnail-url n="0">http://mirrors.ibiblio.org/flightgear/ftp/Aircraft-2018/thumbnails</thumbnail-url>
<thumbnail-url n="1">http://ukmirror.flightgear.org/official/Aircraft-2018/thumbnails</thumbnail-url>
<thumbnail-url n="2">https://cdn.merspieler.tk/fgaddon/Aircraft-2018/thumbnails</thumbnail-url>
<!-- share zips with the trunk catalog where possible -->

View File

@@ -0,0 +1 @@
*.xcf*

View File

@@ -0,0 +1 @@
12

View File

View File

@@ -3,8 +3,13 @@
import unittest
import sgprops
import os
from os.path import join
import catalog
import xml.etree.cElementTree as ET
import lxml.etree as ET
from shutil import rmtree
from tempfile import mkdtemp
import zipfile
catalog.quiet = True
@@ -93,7 +98,7 @@ class UpdateCatalogTests(unittest.TestCase):
catalog_node = ET.Element('PropertyList')
catalog_root = ET.ElementTree(catalog_node)
pkgNode = catalog.make_aircraft_node('f16', pkg, variants, "http://foo.com/testOutput/")
pkgNode = catalog.make_aircraft_node('f16', pkg, variants, "http://foo.com/testOutput/", [])
catalog_node.append(pkgNode)
# write out so we can parse using sgprops
@@ -172,7 +177,7 @@ class UpdateCatalogTests(unittest.TestCase):
catalog_node = ET.Element('PropertyList')
catalog_root = ET.ElementTree(catalog_node)
pkgNode = catalog.make_aircraft_node('dc3', pkg, variants, "http://foo.com/testOutput/")
pkgNode = catalog.make_aircraft_node('dc3', pkg, variants, "http://foo.com/testOutput/", [])
catalog_node.append(pkgNode)
if not os.path.isdir("testOutput"):
@@ -210,7 +215,7 @@ class UpdateCatalogTests(unittest.TestCase):
catalog_node = ET.Element('PropertyList')
catalog_root = ET.ElementTree(catalog_node)
pkgNode = catalog.make_aircraft_node('c150', pkg, variants, "http://foo.com/testOutput/")
pkgNode = catalog.make_aircraft_node('c150', pkg, variants, "http://foo.com/testOutput/", [])
catalog_node.append(pkgNode)
if not os.path.isdir("testOutput2"):
@@ -234,5 +239,85 @@ class UpdateCatalogTests(unittest.TestCase):
self.assertFalse(parsedPkgNode.hasChild('minimum-fg-version'));
self.assertFalse(parsedPkgNode.hasChild('variant'));
class ZipTests(unittest.TestCase):
"""Specific craft zip file creation tests."""
def check_zip(self, file_name, expected_content=None):
"""General checks for the zip file."""
# Check for file existence.
self.assert_(os.access(file_name, os.F_OK))
# Check the contents.
file = zipfile.ZipFile(file_name)
zip_contents = file.namelist()
if len(zip_contents) != len(expected_content):
print("Zip contents:\n %s" % zip_contents)
print("Expected contents:\n %s" % expected_content)
self.assertEqual(len(zip_contents), len(expected_content))
for i in range(len(zip_contents)):
self.assertEqual(zip_contents[i], expected_content[i])
def setUp(self):
"""Common set up for these system tests."""
# Store the current directory.
self._cwd = os.getcwd()
# Create a temporary directory for dumping files.
self.tmpdir = mkdtemp()
def tearDown(self):
"""Delete temp files."""
# Force return to the correct directory.
os.chdir(self._cwd)
# Remove temporary file (if there is a deletion failure, continue to allow the test suite to survive).
try:
rmtree(self.tmpdir)
except:
pass
# Remove the variable.
del self.tmpdir
def test_zip_creation(self):
"""Test the creation of a basic craft zip archive."""
# Create a basic zip file.
name = "c172"
catalog.make_aircraft_zip(join(os.getcwd(), "testData/Aircraft"), name, join(self.tmpdir, name+'.zip'), join(os.getcwd(), 'fgaddon-catalog/zip-excludes.lst'), verbose=False)
# Checks.
self.check_zip(join(self.tmpdir, name+'.zip'), expected_content=['c172/c172-set.xml'])
def test_zip_exclusion_global(self):
"""Test file exclusion in a craft zip archive using the global catalog exclusion list."""
# Create a basic zip file.
name = "dc3"
catalog.make_aircraft_zip(join(os.getcwd(), "testData/Aircraft"), name, join(self.tmpdir, name+'.zip'), join(os.getcwd(), 'fgaddon-catalog/zip-excludes.lst'), verbose=False)
# Checks.
self.check_zip(join(self.tmpdir, name+'.zip'), expected_content=['dc3/dc3-set.xml'])
def test_zip_exclusion_local(self):
"""Test file exclusion in a craft zip archive using a local catalog exclusion list."""
# Create a basic zip file.
name = "c150"
catalog.make_aircraft_zip(join(os.getcwd(), "testData/Aircraft"), name, join(self.tmpdir, name+'.zip'), join(os.getcwd(), 'testData/Aircraft/c150/zip-excludes.lst'), verbose=False)
# Checks.
self.check_zip(join(self.tmpdir, name+'.zip'), expected_content=['c150/c150-set.xml', 'c150/Resources/crazy_20Gb_file'])
if __name__ == '__main__':
unittest.main()

View File

@@ -1,4 +1,4 @@
#!/usr/bin/python
#! /usr/bin/env python3
import argparse
import datetime
@@ -13,9 +13,14 @@ import sgprops
import sys
import catalogTags
import catalog
from catalog import make_aircraft_node, make_aircraft_zip, parse_config_file, parse_template_file
CATALOG_VERSION = 4
# The Python version.
PY_VERSION = sys.version_info[0]
parser = argparse.ArgumentParser()
parser.add_argument("--update", help="Update/pull SCM source",
action="store_true")
@@ -43,6 +48,11 @@ def get_xml_text(e):
def last_change_date_svn(dir):
command = [ 'svn', 'info', dir ]
result = subprocess.check_output( command )
# Python 3 compatibility.
if PY_VERSION == 3:
result = result.decode('utf8')
match = re.search('Last Changed Date: (\d+)\-(\d+)\-(\d+)', result)
if match:
rev_str = match.group(1) + match.group(2) + match.group(3)
@@ -66,24 +76,9 @@ def scan_dir_for_change_date_mtime(path):
maxsec = mtime
return maxsec
def make_aircraft_zip(repo_path, name, zip_file):
if (not args.quiet):
print "Updating:", name + '.zip'
savedir = os.getcwd()
os.chdir(repo_path)
if os.path.exists(zip_file):
os.remove(zip_file)
command = ['zip', '-rq', '-9']
if os.path.exists(zip_excludes):
command += ['-x@' + zip_excludes]
else:
print "warning: no zip-excludes.lst file provided", zip_excludes
command += [zip_file, name]
subprocess.call(command)
os.chdir(savedir)
def get_md5sum(file):
f = open(file, 'r')
f = open(file, 'rb')
md5sum = hashlib.md5(f.read()).hexdigest()
f.close()
return md5sum
@@ -95,7 +90,7 @@ def copy_previews_for_variant(variant, package_name, package_dir, previews_dir):
for preview in variant['previews']:
preview_src = os.path.join(package_dir, preview['path'])
preview_dst = os.path.join(previews_dir, package_name + '_' + preview['path'])
#print preview_src, preview_dst, preview['path']
#print(preview_src, preview_dst, preview['path'])
dir = os.path.dirname(preview_dst)
if not os.path.isdir(dir):
os.makedirs(dir)
@@ -142,13 +137,13 @@ def process_aircraft_dir(name, repo_path):
(package, variants) = catalog.scan_aircraft_dir(aircraft_dir, includes)
if package == None:
if not args.quiet:
print "skipping:", name, "(no -set.xml files)"
print("skipping: %s (no -set.xml files)" % name)
return
if not args.quiet:
print "%s:" % name,
print("%s:" % name)
package_node = catalog.make_aircraft_node(name, package, variants, download_base, mirrors)
package_node = make_aircraft_node(name, package, variants, download_base, mirrors)
download_url = download_base + name + '.zip'
if 'thumbnail' in package:
@@ -167,8 +162,8 @@ def process_aircraft_dir(name, repo_path):
d = datetime.datetime.utcfromtimestamp(dir_mtime)
rev = d.strftime("%Y%m%d")
package_node.append( catalog.make_xml_leaf('revision', rev) )
#print "rev:", rev
#print "dir mtime:", dir_mtime
#print("rev: %s" % rev)
#print("dir mtime: %s" % dir_mtime)
zipfile = os.path.join( output_dir, name + '.zip' )
valid_zips.append(name + '.zip')
if not os.path.exists(zipfile) \
@@ -176,12 +171,12 @@ def process_aircraft_dir(name, repo_path):
or args.clean:
# rebuild zip file
if not args.quiet:
print "updating:", zipfile
make_aircraft_zip(repo_path, name, zipfile)
print("updating: %s" % zipfile)
make_aircraft_zip(repo_path, name, zipfile, zip_excludes, verbose=not args.quiet)
md5sum = get_md5sum(zipfile)
else:
if not args.quiet:
print "(no change)"
print("(no change)")
if md5sum == "":
md5sum = get_md5sum(zipfile)
filesize = os.path.getsize(zipfile)
@@ -202,7 +197,7 @@ def process_aircraft_dir(name, repo_path):
shared_md5 = get_xml_text(sharedNode)
if shared_md5 == md5sum:
if not args.quiet:
print "Sharing zip with share catalog for:",name
print("Sharing zip with share catalog for: %s" % name)
os.remove(zipfile)
os.symlink(os.path.join( share_output_dir, name + '.zip' ), zipfile)
@@ -223,19 +218,12 @@ def process_aircraft_dir(name, repo_path):
# return (md5, file_size)
if not os.path.isdir(args.dir):
print "A valid catalog directory must be provided"
print("A valid catalog directory must be provided")
exit(0)
parser = ET.XMLParser(remove_blank_text=True)
config_file = os.path.join(args.dir, 'catalog.config.xml')
config = ET.parse(config_file, parser)
config_node = config.getroot()
template_file = os.path.join(args.dir, 'template.xml')
template = ET.parse(template_file, parser)
template_root = template.getroot()
template_node = template_root.find('template')
config_node = parse_config_file(parser=parser, file_name=os.path.join(args.dir, 'catalog.config.xml'))
template_node = parse_template_file(parser=parser, file_name=os.path.join(args.dir, 'template.xml'))
md5sum_file = os.path.join(args.dir, 'md5sum.xml')
if os.path.exists(md5sum_file):
@@ -249,7 +237,7 @@ else:
share_output_dir = get_xml_text(config_node.find('share-output'))
share_md5_file = get_xml_text(config_node.find('share-md5-sums'))
if share_output_dir != '' and share_md5_file != '':
print 'Output shared with:', share_output_dir
print("Output shared with: %s" % share_output_dir)
share_md5sum_tree = ET.parse(share_md5_file, parser)
share_md5sum_root = share_md5sum_tree.getroot()
else:
@@ -291,31 +279,37 @@ zip_excludes = os.path.realpath(tmp)
for i in config_node.findall("include-dir"):
path = get_xml_text(i)
if not os.path.exists(path):
print "Skipping missing include path:", path
print("Skipping missing include path: %s" % path)
continue
includes.append(path)
# freshen repositories
if args.no_update:
print 'Skipping repository updates.'
print('Skipping repository updates.')
else:
cwd = os.getcwd()
for scm in scm_list:
# XML mandated skip, with command line override.
if not args.update:
skip = get_xml_text(scm.find('update'))
if skip == 'false':
continue
repo_type = get_xml_text(scm.find('type'))
repo_path = get_xml_text(scm.find('path'))
includes.append(repo_path)
if repo_type == 'svn':
print 'SVN update:', repo_path
print("SVN update: %s" % repo_path)
subprocess.call(['svn', 'update', repo_path])
elif repo_type == 'git':
print 'GIT pull:', repo_path
print("GIT pull: %s" % repo_path)
os.chdir(repo_path)
subprocess.call(['git','pull'])
elif repo_type == 'no-scm':
print "No update of unmannaged files:", repo_path
print("No update of unmannaged files: %s" % repo_path)
else:
print "Unknown scm type:", scm, repo_path
print("Unknown scm type: %s %s" % (scm, repo_path))
os.chdir(cwd)
# names of zip files we want (so we can identify/remove orphans)
@@ -337,16 +331,27 @@ for scm in scm_list:
skip_list = []
for s in skip_nodes:
skip_list.append(get_xml_text(s))
print 'skip list:', skip_list
# Selective list of craft to include, overriding the skip list.
include_nodes = scm.findall('include')
include_list = []
for node in include_nodes:
include_list.append(get_xml_text(node))
if len(include_list):
skip_list = []
print("Skip list: %s" % skip_list)
print("Include list: %s" % include_list)
names = os.listdir(repo_path)
for name in sorted(names, key=lambda s: s.lower()):
if name in skip_list:
if name in skip_list or (len(include_list) and name not in include_list):
if not args.quiet:
print "skipping:", name
print("Skipping: %s" % name)
continue
# process each aircraft in turn
# print name, repo_path
# print("%s %s" % (name, repo_path))
process_aircraft_dir(name, repo_path)
# write out the master catalog file
@@ -354,11 +359,11 @@ cat_file = os.path.join(output_dir, 'catalog.xml')
catalog_root.write(cat_file, encoding='utf-8', xml_declaration=True, pretty_print=True)
# write out the md5sum cache file
print md5sum_file
print(md5sum_file)
md5sum_tree.write(md5sum_file, encoding='utf-8', xml_declaration=True, pretty_print=True)
# look for orphaned zip files
files = os.listdir(output_dir)
for file in files:
if file.endswith('.zip')and not file in valid_zips:
print "orphaned zip:", file
print("orphaned zip: %s" % file)

View File

@@ -49,7 +49,7 @@ _elementIn(){
shift
for e; do
if [[ "$e" == "$valueToCheck" ]]; then
if [ "$e" = "$valueToCheck" ]; then
return 0
fi
done
@@ -118,18 +118,18 @@ function _gitUpdate(){
if [ "$DOWNLOAD" != "y" ]; then
return
fi
branch=$1
branch="$1"
set +e
git diff --exit-code 2>&1 > /dev/null
if [ $? != 1 ]; then
set -e
git pull -r
git checkout -f $branch
git checkout -f "$branch"
else
set -e
git stash save -u -q
git pull -r
git checkout -f $branch
git checkout -f "$branch"
git stash pop -q
fi
}
@@ -186,8 +186,8 @@ function _gitDownload(){
function _make(){
if [ "$COMPILE" = "y" ]; then
pkg=$1
cd "$CBD"/build/$pkg
pkg="$1"
cd "$CBD/build/$pkg"
_printLog "MAKE $pkg"
make $JOPTION $OOPTION 2>&1 | _logOutput
_printLog "INSTALL $pkg"
@@ -278,6 +278,23 @@ function _find_package_alternative(){
fi
}
# If component $1 is in WHATTOBUILD, add components $2, $3, etc., to
# WHATTOBUILD unless they are already there.
function _depends(){
local component="$1"
shift
if _elementIn "$component" "${WHATTOBUILD[@]}"; then
for dependency in "$@"; do
if ! _elementIn "$dependency" "${WHATTOBUILD[@]}"; then
_printLog "$component: adding depended-on component $dependency"
WHATTOBUILD+=("$dependency")
nb_added_intercomponent_deps=$((nb_added_intercomponent_deps + 1))
fi
done
fi
}
function _printVersion(){
echo "$PROGNAME version $VERSION"
echo
@@ -340,7 +357,14 @@ function _usage() {
echo " -j X pass -jX to the Make program"
echo " -O X pass -OX to the Make program"
echo " -r y|n y=reconfigure programs before compiling them, n=don't reconfigure default=y"
echo " --ignore-intercomponent-deps"
echo " Ignore dependencies between components (default: don't)."
echo " Example: TERRAGEAR depends on SIMGEAR. Passing the option can be"
echo " useful if you want to update, rebuild, etc. TERRAGEAR without"
echo " doing the same for SIMGEAR (e.g., if doing repeated TERRAGEAR"
echo " builds and you know your SIMGEAR is already fine and up-to-date)."
echo " -s compile only the last known stable versions"
echo " --compositor build FlightGear with compositor enabled."
}
#######################################################
@@ -353,7 +377,7 @@ LOGFILE="$CBD/compilation_log.txt"
# Available values for WHATTOBUILD and WHATTOBUILDALL:
declare -a WHATTOBUILD_AVAIL=(
'CMAKE' 'PLIB' 'OPENRTI' 'OSG' 'SIMGEAR' 'FGFS' 'DATA' 'FGRUN' 'FGO' 'FGX'
'OPENRADAR' 'ATCPIE' 'TERRAGEAR' 'TERRAGEARGUI'
'OPENRADAR' 'ATCPIE' 'TERRAGEAR' 'TERRAGEARGUI' 'ZLIB'
)
WHATTOBUILDALL=(SIMGEAR FGFS DATA)
@@ -363,15 +387,21 @@ DOWNLOAD_PACKAGES="y"
COMPILE="y"
RECONFIGURE="y"
DOWNLOAD="y"
IGNORE_INTERCOMPONENT_DEPS="n"
SUDO="sudo"
PKG_MGR="apt-get"
if [[ `uname` == 'OpenBSD' ]]; then
APT_GET_UPDATE="n"
DOWNLOAD_PACKAGES="n"
fi
# How to download Git repositories:
#
# - 'https' used to be fine, but is currently unreliable at SourceForge (esp.
# for FGData, see
# <https://forum.flightgear.org/viewtopic.php?f=20&t=33620&start=90&sid=afb8b688a02c01ea4ea9306c35487bd0>);
# <https://forum.flightgear.org/viewtopic.php?f=20&t=33620&start=90>);
# - 'git' is insecure (no way to guarantee you are downloading what you expect
# to be downloading);
# - 'ssh' is secure, but requires an account at SourceForge (may be created at
@@ -384,8 +414,10 @@ REPO_DEFAULT_USERNAME=''
JOPTION=""
OOPTION=""
BUILD_TYPE="RelWithDebInfo"
SG_CMAKEARGS=""
FG_CMAKEARGS=""
# Non user-exposed variable used to decide whether to print a “helpful”
# message
declare -i nb_added_intercomponent_deps=0
declare -a UNMATCHED_OPTIONAL_PKG_ALTERNATIVES
@@ -404,8 +436,10 @@ declare -A USERNAME_AT_SITE
declare -A REPO_ADDRESS
declare -A REPO_SITE
REPO_ADDRESS[CMAKE]="cmake.org/cmake.git"
REPO_SITE[CMAKE]="cmake.org"
REPO_ADDRESS[CMAKE]="gitlab.kitware.com/cmake/cmake.git"
REPO_SITE[CMAKE]="gitlab.kitware.com"
REPO_ADDRESS[ZLIB]="github.com/madler/zlib.git"
REPO_SITE[ZLIB]="GitHub"
REPO_ADDRESS[PLIB]="git.code.sf.net/p/libplib/code"
REPO_SITE[PLIB]="SourceForge"
REPO_ADDRESS[OPENRTI]="git.code.sf.net/p/openrti/OpenRTI"
@@ -431,9 +465,13 @@ REPO_SITE[TERRAGEARGUI]="SourceForge"
# getopt is from the util-linux package (in Debian). Contrary to bash's getopts
# built-in function, it allows one to define long options.
TEMP=$(getopt -o '+shc:p:a:d:r:j:O:ib:' \
getopt=getopt
if [[ `uname` == 'OpenBSD' ]]; then
getopt=gnugetopt
fi
TEMP=$($getopt -o '+shc:p:a:d:r:j:O:ib:' \
--longoptions git-clone-default-proto:,git-clone-site-params:,help \
--longoptions package-manager:,sudo:,version \
--longoptions package-manager:,sudo:,ignore-intercomponent-deps,compositor,version \
-n "$PROGNAME" -- "$@")
case $? in
@@ -504,11 +542,13 @@ while true; do
;;
--package-manager) PKG_MGR="$2"; shift 2 ;;
--sudo) SUDO="$2"; shift 2 ;;
--ignore-intercomponent-deps) IGNORE_INTERCOMPONENT_DEPS="y"; shift ;;
-r) RECONFIGURE="$2"; shift 2 ;;
-j) JOPTION=" -j$2"; shift 2 ;;
-O) OOPTION=" -O$2"; shift 2 ;;
-i) OPENRTI="OPENRTI"; shift ;;
-b) BUILD_TYPE="$2"; shift 2 ;;
--compositor) COMPOSITOR="-DENABLE_COMPOSITOR=ON"; shift ;;
-h|--help) _usage; exit 0 ;;
--version) _printVersion; exit 0 ;;
--) shift; break ;;
@@ -559,16 +599,18 @@ unset -v site
#######################################################
# Warning about compilation time and size
# Idea from Jester
echo "**************************************"
echo "* *"
echo "* Warning, the compilation process *"
echo "* is going to use 12 or more Gbytes *"
echo "* of space and at least a couple of *"
echo "* hours to download and build FG. *"
echo "* *"
echo "* Please, be patient ...... *"
echo "* *"
echo "**************************************"
echo '**********************************************************************'
echo '* *'
echo '* Warning: a typical SimGear + FlightGear + FGData build requires *'
echo '* about 12 GiB of disk space. The compilation part may last from a *'
echo '* few minutes to hours, depending on your computer. *'
echo '* *'
echo '* Hint: use the -j option if your CPU has several cores, as in: *'
echo '* *'
echo '* download_and_compile.sh -j$(nproc) *'
echo '* *'
echo '**********************************************************************'
echo
#######################################################
#######################################################
@@ -577,18 +619,60 @@ echo "$0 $*" > "$LOGFILE"
_log "VERSION=$VERSION"
_log "APT_GET_UPDATE=$APT_GET_UPDATE"
_log "DOWNLOAD_PACKAGES=$DOWNLOAD_PACKAGES"
_log "IGNORE_INTERCOMPONENT_DEPS=$IGNORE_INTERCOMPONENT_DEPS"
_log "COMPILE=$COMPILE"
_log "RECONFIGURE=$RECONFIGURE"
_log "DOWNLOAD=$DOWNLOAD"
_log "JOPTION=$JOPTION"
_log "OOPTION=$OOPTION"
_log "BUILD_TYPE=$BUILD_TYPE"
_log "SG_CMAKEARGS=$SG_CMAKEARGS"
_log "FG_CMAKEARGS=$FG_CMAKEARGS"
_log "COMPOSITOR=$COMPOSITOR"
_log "DIRECTORY=$CBD"
if [ "$STABLE" = "STABLE" ]; then
_log "Stable build: yes"
else
_log "Stable build: no"
fi
_logSep
#######################################################
#######################################################
# ****************************************************************************
# * Inter-component Dependencies *
# ****************************************************************************
if [ "$IGNORE_INTERCOMPONENT_DEPS" = "n" ]; then
# FlightGear requires SimGear
_depends FGFS SIMGEAR
# TerraGear requires SimGear
_depends TERRAGEAR SIMGEAR
# Print a helpful message if some components were automatically added
if (( nb_added_intercomponent_deps > 0 )); then
if (( nb_added_intercomponent_deps > 1 )); then
comp_word='components'
else
comp_word='component'
fi
_printLog "$PROGNAME: automatically added $nb_added_intercomponent_deps" \
"$comp_word based on"
_printLog "intercomponent dependencies. Use option" \
"--ignore-intercomponent-deps if you"
_printLog "want to disable this behavior."
_printLog
unset -v comp_word
fi
fi
# ****************************************************************************
# * Component dependencies on distribution packages *
# ****************************************************************************
if [[ "$DOWNLOAD_PACKAGES" = "y" ]]; then
if [[ "$APT_GET_UPDATE" = "y" ]]; then
_aptUpdate
@@ -601,51 +685,82 @@ if [[ "$DOWNLOAD_PACKAGES" = "y" ]]; then
fi
# Minimum
PKG=(build-essential cmake git)
PKG=(build-essential git)
_mandatory_pkg_alternative libcurl4-openssl-dev libcurl4-gnutls-dev
# cmake
PKG+=(libarchive-dev libbz2-dev libexpat1-dev libjsoncpp-dev liblzma-dev
libncurses5-dev procps zlib1g-dev)
# TG
PKG+=(libcgal-dev libgdal-dev libtiff5-dev)
# TGGUI/OpenRTI
PKG+=(libqt4-dev)
# SG/FG
PKG+=(zlib1g-dev freeglut3-dev libglew-dev libboost-dev)
_mandatory_pkg_alternative libopenscenegraph-3.4-dev libopenscenegraph-dev \
'libopenscenegraph-[0-9]+\.[0-9]+-dev'
# FG
PKG+=(libopenal-dev libudev-dev libdbus-1-dev libplib-dev)
_mandatory_pkg_alternative libpng-dev libpng12-dev libpng16-dev
# The following packages are needed for the built-in launcher
_optional_pkg_alternative qt5-default
_optional_pkg_alternative qtdeclarative5-dev
_optional_pkg_alternative qtbase5-dev-tools # for rcc
_optional_pkg_alternative qttools5-dev-tools # for lrelease
_optional_pkg_alternative qml-module-qtquick2
_optional_pkg_alternative qml-module-qtquick-window2
_optional_pkg_alternative qml-module-qtquick-dialogs
_optional_pkg_alternative libqt5opengl5-dev
_optional_pkg_alternative libqt5svg5-dev
_optional_pkg_alternative libqt5websockets5-dev
# The following packages are only needed for the Qt-based remote Canvas
# (comment written at the time of FG 2018.2).
_optional_pkg_alternative qtbase5-private-dev
_optional_pkg_alternative qtdeclarative5-private-dev
# FGPanel
PKG+=(fluid libbz2-dev libfltk1.3-dev libxi-dev libxmu-dev)
# FGAdmin
PKG+=(libxinerama-dev libjpeg-dev libxft-dev)
# ATC-Pie
PKG+=(python3-pyqt5 python3-pyqt5.qtmultimedia libqt5multimedia5-plugins)
# FGo
PKG+=(python-tk)
# FGx (FGx is not compatible with Qt5, however we have installed Qt5 by default)
#PKG+=(libqt5xmlpatterns5-dev libqt5webkit5-dev)
# CMake
if _elementIn "CMAKE" "${WHATTOBUILD[@]}"; then
PKG+=(libarchive-dev libbz2-dev libexpat1-dev libjsoncpp-dev liblzma-dev
libncurses5-dev procps zlib1g-dev)
else
PKG+=(cmake)
fi
# TerraGear
if _elementIn "TERRAGEAR" "${WHATTOBUILD[@]}"; then
PKG+=(libboost-dev libcgal-dev libgdal-dev libtiff5-dev zlib1g-dev)
fi
# TerraGear GUI and OpenRTI
if _elementIn "TERRAGEARGUI" "${WHATTOBUILD[@]}" || \
_elementIn "OPENRTI" "${WHATTOBUILD[@]}"; then
PKG+=(libqt4-dev)
fi
# SimGear and FlightGear
if _elementIn "SIMGEAR" "${WHATTOBUILD[@]}" || \
_elementIn "FGFS" "${WHATTOBUILD[@]}"; then
PKG+=(zlib1g-dev freeglut3-dev libglew-dev libopenal-dev libboost-dev)
_mandatory_pkg_alternative libopenscenegraph-3.4-dev libopenscenegraph-dev \
'libopenscenegraph-[0-9]+\.[0-9]+-dev'
fi
# FlightGear
if _elementIn "FGFS" "${WHATTOBUILD[@]}"; then
PKG+=(libudev-dev libdbus-1-dev libplib-dev)
_mandatory_pkg_alternative libpng-dev libpng12-dev libpng16-dev
# The following packages are needed for the built-in launcher
_optional_pkg_alternative qt5-default
_optional_pkg_alternative qtdeclarative5-dev
_optional_pkg_alternative qttools5-dev
_optional_pkg_alternative qtbase5-dev-tools # for rcc
_optional_pkg_alternative qttools5-dev-tools # for lrelease
_optional_pkg_alternative qml-module-qtquick2
_optional_pkg_alternative qml-module-qtquick-window2
_optional_pkg_alternative qml-module-qtquick-dialogs
_optional_pkg_alternative libqt5opengl5-dev
_optional_pkg_alternative libqt5svg5-dev
_optional_pkg_alternative libqt5websockets5-dev
# The following packages are only needed for the Qt-based remote Canvas
# (comment written at the time of FG 2018.2).
_optional_pkg_alternative qtbase5-private-dev
_optional_pkg_alternative qtdeclarative5-private-dev
# FGPanel
PKG+=(fluid libbz2-dev libfltk1.3-dev libxi-dev libxmu-dev)
# FGAdmin
PKG+=(libxinerama-dev libjpeg-dev libxft-dev)
# swift
_optional_pkg_alternative libevent-dev
fi
# ATC-pie
if _elementIn "ATCPIE" "${WHATTOBUILD[@]}"; then
PKG+=(python3-pyqt5 python3-pyqt5.qtmultimedia libqt5multimedia5-plugins)
fi
# FGo!
if _elementIn "FGO" "${WHATTOBUILD[@]}"; then
PKG+=(python-tk)
fi
# if _elementIn "FGX" "${WHATTOBUILD[@]}"; then
# FGx (FGx is not compatible with Qt5, however we have installed Qt5 by
# default)
# PKG+=(libqt5xmlpatterns5-dev libqt5webkit5-dev)
# fi
_aptInstall "${PKG[@]}"
else
_printLog
_printLog "Note: option -p of $PROGNAME set to 'n' (no), therefore no"
_printLog " package will be installed via ${PKG_MGR}. Compilation of" \
"some components"
@@ -690,7 +805,7 @@ _printLog
# cmake
#######################################################
CMAKE_INSTALL_DIR=cmake
INSTALL_DIR_CMAKE=$INSTALL_DIR/$CMAKE_INSTALL_DIR
INSTALL_DIR_CMAKE="$INSTALL_DIR/$CMAKE_INSTALL_DIR"
cd "$CBD"
if _elementIn "CMAKE" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -700,7 +815,7 @@ if _elementIn "CMAKE" "${WHATTOBUILD[@]}"; then
mkdir -p "cmake"
cd "$CBD"/cmake
_gitDownload CMAKE
_gitUpdate master
_gitUpdate release
if [ "$RECONFIGURE" = "y" ]; then
cd "$CBD"
@@ -721,11 +836,40 @@ else
fi
fi
#######################################################
# ZLIB
#######################################################
ZLIB_INSTALL_DIR=zlib
INSTALL_DIR_ZLIB="$INSTALL_DIR/$ZLIB_INSTALL_DIR"
cd "$CBD"
if _elementIn "ZLIB" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
_printLog "**************** ZLIB ******************"
_printLog "****************************************"
mkdir -p "zlib"
cd "$CBD"/zlib
_gitDownload ZLIB
_gitUpdate master
if [ "$RECONFIGURE" = "y" ]; then
cd "$CBD"
mkdir -p build/zlib
_log "CONFIGURING zlib"
cd "$CBD"/build/zlib
"$CMAKE" -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_DIR_ZLIB" \
../../zlib 2>&1 | _logOutput
fi
_make zlib
fi
#######################################################
# PLIB
#######################################################
PLIB_INSTALL_DIR=plib
INSTALL_DIR_PLIB=$INSTALL_DIR/$PLIB_INSTALL_DIR
INSTALL_DIR_PLIB="$INSTALL_DIR/$PLIB_INSTALL_DIR"
cd "$CBD"
if _elementIn "PLIB" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -754,7 +898,7 @@ fi
# OPENRTI
#######################################################
OPENRTI_INSTALL_DIR=openrti
INSTALL_DIR_OPENRTI=$INSTALL_DIR/$OPENRTI_INSTALL_DIR
INSTALL_DIR_OPENRTI="$INSTALL_DIR/$OPENRTI_INSTALL_DIR"
cd "$CBD"
if _elementIn "OPENRTI" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -788,15 +932,15 @@ fi
# OpenSceneGraph
#######################################################
OSG_INSTALL_DIR=openscenegraph
INSTALL_DIR_OSG=$INSTALL_DIR/$OSG_INSTALL_DIR
INSTALL_DIR_OSG="$INSTALL_DIR/$OSG_INSTALL_DIR"
cd "$CBD"
mkdir -p "openscenegraph"
if _elementIn "OSG" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
_printLog "**************** OSG *******************"
_printLog "****************************************"
cd "$CBD"/openscenegraph
mkdir -p "openscenegraph"
cd "openscenegraph"
_gitDownload OSG
_gitUpdate OpenSceneGraph-3.4
@@ -830,7 +974,7 @@ fi
# SIMGEAR
#######################################################
SIMGEAR_INSTALL_DIR=simgear
INSTALL_DIR_SIMGEAR=$INSTALL_DIR/$SIMGEAR_INSTALL_DIR
INSTALL_DIR_SIMGEAR="$INSTALL_DIR/$SIMGEAR_INSTALL_DIR"
cd "$CBD"
if _elementIn "SIMGEAR" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -840,16 +984,21 @@ if _elementIn "SIMGEAR" "${WHATTOBUILD[@]}"; then
mkdir -p "simgear"
cd "$CBD"/simgear
_gitDownload SIMGEAR
_gitUpdate $FGVERSION
_gitUpdate "$FGVERSION"
if [ "$RECONFIGURE" = "y" ]; then
cd "$CBD"
mkdir -p build/simgear
cd "$CBD"/build/simgear
rm -f CMakeCache.txt
extra=''
if [[ `uname` == 'OpenBSD' ]]; then
extra=-DZLIB_ROOT=$INSTALL_DIR_ZLIB
fi
"$CMAKE" -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_DIR_SIMGEAR" \
-DCMAKE_PREFIX_PATH="$INSTALL_DIR_OSG;$INSTALL_DIR_OPENRTI" \
$extra \
$SG_CMAKEARGS \
../../simgear 2>&1 | _logOutput
fi
@@ -861,7 +1010,7 @@ fi
# FGFS
#######################################################
FGFS_INSTALL_DIR=flightgear
INSTALL_DIR_FGFS=$INSTALL_DIR/$FGFS_INSTALL_DIR
INSTALL_DIR_FGFS="$INSTALL_DIR/$FGFS_INSTALL_DIR"
cd "$CBD"
if _elementIn "FGFS" "${WHATTOBUILD[@]}" || \
_elementIn "DATA" "${WHATTOBUILD[@]}"; then
@@ -874,7 +1023,7 @@ if _elementIn "FGFS" "${WHATTOBUILD[@]}" || \
_printLog "****************************************"
_gitDownload DATA
_gitUpdate $FGVERSION
_gitUpdate "$FGVERSION"
fi
mkdir -p "$CBD"/flightgear
@@ -886,49 +1035,103 @@ if _elementIn "FGFS" "${WHATTOBUILD[@]}" || \
_printLog "****************************************"
_gitDownload FGFS
_gitUpdate $FGVERSION
_gitUpdate "$FGVERSION"
if [ "$RECONFIGURE" = "y" ]; then
cd "$CBD"
mkdir -p build/flightgear
cd "$CBD"/build/flightgear
rm -f CMakeCache.txt
extra=
if [[ `uname` == 'OpenBSD' ]]; then
extra="-DZLIB_ROOT=$INSTALL_DIR_ZLIB \
-DENABLE_QT=OFF \
-DENABLE_FGCOM=OFF \
-DVERBOSE=1"
fi
"$CMAKE" -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
$COMPOSITOR \
-DENABLE_FLITE=ON \
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_DIR_FGFS" \
-DCMAKE_PREFIX_PATH="$INSTALL_DIR_SIMGEAR;$INSTALL_DIR_OSG;$INSTALL_DIR_OPENRTI;$INSTALL_DIR_PLIB" \
-DFG_DATA_DIR="$INSTALL_DIR_FGFS/fgdata" \
-DFG_DATA_DIR:PATH="$INSTALL_DIR_FGFS/fgdata" \
-DTRANSLATIONS_SRC_DIR:PATH="$INSTALL_DIR_FGFS/fgdata/Translations" \
$extra \
$FG_CMAKEARGS \
../../flightgear 2>&1 | _logOutput
fi
_make flightgear
if [[ `uname` == 'OpenBSD' ]]; then
# _make will end up running fgrcc, which was built with our zlib, so we
# need to set LD_LIBRARY_PATH, otherwise things will fail because the
# system zlib is too old.
LD_LIBRARY_PATH=$INSTALL_DIR_ZLIB/lib _make flightgear
else
_make flightgear
fi
fi
cd "$CBD"
paths="../../$SIMGEAR_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$OPENRTI_INSTALL_DIR/lib:../../$PLIB_INSTALL_DIR/lib"
gdb="gdb"
set_ld_library_path="export LD_LIBRARY_PATH='$paths'\"\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}\""
common=""
common="${common}#!/bin/sh\n"
common="${common}cd \"\$(dirname \"\$0\")\"\n"
common="${common}cd '$SUB_INSTALL_DIR/$FGFS_INSTALL_DIR/bin'\n"
if [[ `uname` == 'OpenBSD' ]]; then
# Force use of our zlib.
paths="$paths:../../$ZLIB_INSTALL_DIR/lib"
# OpenBSD's base gdb is too old; `pkg_add egdb` gives one that we can use.
gdb="egdb"
common="${common}ulimit -d 4194304\n"
fi
common="${common}export LD_LIBRARY_PATH='$paths'\"\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}\"\n"
SCRIPT=run_fgfs.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $SUB_INSTALL_DIR/$FGFS_INSTALL_DIR/bin" >> $SCRIPT
echo "export LD_LIBRARY_PATH=../../$SIMGEAR_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$OPENRTI_INSTALL_DIR/lib:../../$PLIB_INSTALL_DIR/lib\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}" \
>> $SCRIPT
echo "./fgfs --fg-root=\$PWD/../fgdata/ \$@" >> $SCRIPT
echo -en "$common" > $SCRIPT
echo "./fgfs --fg-root=\"\$PWD/../fgdata\" \"\$@\"" >> $SCRIPT
chmod 755 $SCRIPT
SCRIPT=run_fgfs_debug.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $SUB_INSTALL_DIR/$FGFS_INSTALL_DIR/bin" >> $SCRIPT
echo "export LD_LIBRARY_PATH=../../$SIMGEAR_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$OPENRTI_INSTALL_DIR/lib:../../$PLIB_INSTALL_DIR/lib\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}" \
>> $SCRIPT
echo "gdb --directory=$CBD/flightgear/src --args fgfs --fg-root=\$PWD/../fgdata/ \$@" >> $SCRIPT
echo -en "$common" > $SCRIPT
echo "$gdb --directory='$CBD/flightgear/src' --args ./fgfs --fg-root=\"\$PWD/../fgdata\" \"\$@\"" >> $SCRIPT
chmod 755 $SCRIPT
# Useful for debugging library problems.
SCRIPT=run_ldd.sh
cat >"$SCRIPT" <<EndOfScriptText
#!/bin/sh
usage() {
echo "Usage: \$0 LDD_ARGUMENT..."
echo "Run 'ldd' with the same LD_LIBRARY_PATH setup as done inside run_fgfs.sh."
echo
echo "Examples: 'run_ldd.sh fgfs', 'run_ldd.sh fgcom', etc. (this can be used"
echo "for any binary in '$SUB_INSTALL_DIR/$FGFS_INSTALL_DIR/bin')."
}
if [ \$# -eq 0 ] || [ "\$1" = "--help" ]; then
usage
exit 1
fi
cd "\$(dirname "\$0")"
cd '$SUB_INSTALL_DIR/$FGFS_INSTALL_DIR/bin'
export LD_LIBRARY_PATH='../../$SIMGEAR_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$OPENRTI_INSTALL_DIR/lib:../../$PLIB_INSTALL_DIR/lib'"\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}"
ldd "\$@"
EndOfScriptText
chmod 755 "$SCRIPT"
SCRIPT=run_fgcom.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $SUB_INSTALL_DIR/$FGFS_INSTALL_DIR/bin" >> $SCRIPT
echo "./fgcom \$@" >> $SCRIPT
echo "cd \"\$(dirname \"\$0\")\"" >> $SCRIPT
echo "cd '$SUB_INSTALL_DIR/$FGFS_INSTALL_DIR/bin'" >> $SCRIPT
echo "./fgcom \"\$@\"" >> $SCRIPT
chmod 755 $SCRIPT
fi
@@ -936,7 +1139,7 @@ fi
# FGRUN
#######################################################
FGRUN_INSTALL_DIR=fgrun
INSTALL_DIR_FGRUN=$INSTALL_DIR/$FGRUN_INSTALL_DIR
INSTALL_DIR_FGRUN="$INSTALL_DIR/$FGRUN_INSTALL_DIR"
cd "$CBD"
if _elementIn "FGRUN" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -946,7 +1149,7 @@ if _elementIn "FGRUN" "${WHATTOBUILD[@]}"; then
mkdir -p "fgrun"
cd "$CBD"/fgrun
_gitDownload FGRUN
_gitUpdate $FGVERSION
_gitUpdate "$FGVERSION"
if [ "$RECONFIGURE" = "y" ]; then
cd "$CBD"
@@ -965,11 +1168,11 @@ if _elementIn "FGRUN" "${WHATTOBUILD[@]}"; then
SCRIPT=run_fgrun.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $SUB_INSTALL_DIR/$FGRUN_INSTALL_DIR/bin" >> $SCRIPT
echo "export LD_LIBRARY_PATH=../../$SIMGEAR_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$OPENRTI_INSTALL_DIR/lib:../../$PLIB_INSTALL_DIR/lib\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}" \
echo "cd \"\$(dirname \"\$0\")\"" >> $SCRIPT
echo "cd '$SUB_INSTALL_DIR/$FGRUN_INSTALL_DIR/bin'" >> $SCRIPT
echo "export LD_LIBRARY_PATH='../../$SIMGEAR_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$OPENRTI_INSTALL_DIR/lib:../../$PLIB_INSTALL_DIR/lib'\"\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}\"" \
>> $SCRIPT
echo "./fgrun --fg-exe=\$PWD/../../$FGFS_INSTALL_DIR/bin/fgfs --fg-root=\$PWD/../../$FGFS_INSTALL_DIR/fgdata \$@" >> $SCRIPT
echo "./fgrun --fg-exe=\"\$PWD\"/../../'$FGFS_INSTALL_DIR/bin/fgfs' --fg-root=\"\$PWD\"/../../'$FGFS_INSTALL_DIR/fgdata' \"\$@\"" >> $SCRIPT
chmod 755 $SCRIPT
fi
@@ -977,7 +1180,7 @@ fi
# FGO!
#######################################################
FGO_INSTALL_DIR=fgo
INSTALL_DIR_FGO=$INSTALL_DIR/$FGO_INSTALL_DIR
INSTALL_DIR_FGO="$INSTALL_DIR/$FGO_INSTALL_DIR"
cd "$CBD"
if _elementIn "FGO" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -996,11 +1199,10 @@ if _elementIn "FGO" "${WHATTOBUILD[@]}"; then
SCRIPT=run_fgo.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $SUB_INSTALL_DIR" >> $SCRIPT
echo "p=\$(pwd)" >> $SCRIPT
echo "cd $FGO_INSTALL_DIR" >> $SCRIPT
echo "python fgo" >> $SCRIPT
echo "cd \"\$(dirname \"\$0\")\"" >> $SCRIPT
echo "cd '$SUB_INSTALL_DIR'" >> $SCRIPT
echo "cd '$FGO_INSTALL_DIR'" >> $SCRIPT
echo "python ./fgo" >> $SCRIPT
chmod 755 $SCRIPT
fi
@@ -1008,7 +1210,7 @@ fi
# FGx
#######################################################
FGX_INSTALL_DIR=fgx
INSTALL_DIR_FGX=$INSTALL_DIR/$FGX_INSTALL_DIR
INSTALL_DIR_FGX="$INSTALL_DIR/$FGX_INSTALL_DIR"
cd "$CBD"
if _elementIn "FGX" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -1036,13 +1238,13 @@ if _elementIn "FGX" "${WHATTOBUILD[@]}"; then
cd ..
if [ "$RECONFIGURE" = "y" ]; then
mkdir -p $INSTALL_DIR_FGX
cd $INSTALL_DIR_FGX
mkdir -p "$INSTALL_DIR_FGX"
cd "$INSTALL_DIR_FGX"
qmake ../../fgx/src
fi
if [ "$COMPILE" = "y" ]; then
cd $INSTALL_DIR_FGX
cd "$INSTALL_DIR_FGX"
_printLog "MAKE AND INSTALL FGX"
_printLog "make $JOPTION $OOPTION"
make $JOPTION $OOPTION 2>&1 | _logOutput
@@ -1053,11 +1255,9 @@ if _elementIn "FGX" "${WHATTOBUILD[@]}"; then
SCRIPT=run_fgx.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $ " >> $SCRIPT
echo "p=\$(pwd)" >> $SCRIPT
echo "cd $FGX_INSTALL_DIR" >> $SCRIPT
echo "./fgx" >> $SCRIPT
echo "cd \"\$(dirname \"\$0\")\"" >> $SCRIPT
echo "cd '$FGX_INSTALL_DIR'" >> $SCRIPT
echo "./fgx \"\$@\"" >> $SCRIPT
chmod 755 $SCRIPT
fi
@@ -1065,7 +1265,7 @@ fi
# ATC-PIE
#######################################################
ATCPIE_INSTALL_DIR=atc-pie
INSTALL_DIR_ATCPIE=$INSTALL_DIR/$ATCPIE_INSTALL_DIR
INSTALL_DIR_ATCPIE="$INSTALL_DIR/$ATCPIE_INSTALL_DIR"
cd "$CBD"
if _elementIn "ATCPIE" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -1073,7 +1273,7 @@ if _elementIn "ATCPIE" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
mkdir -p "$INSTALL_DIR_ATCPIE"
cd $INSTALL_DIR_ATCPIE
cd "$INSTALL_DIR_ATCPIE"
_gitDownload ATCPIE
_gitUpdate master
@@ -1081,9 +1281,9 @@ if _elementIn "ATCPIE" "${WHATTOBUILD[@]}"; then
SCRIPT=run_atcpie.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $SUB_INSTALL_DIR/$ATCPIE_INSTALL_DIR" >> $SCRIPT
echo "./ATC-pie.py \$@" >> $SCRIPT
echo "cd \"\$(dirname \"\$0\")\"" >> $SCRIPT
echo "cd '$SUB_INSTALL_DIR/$ATCPIE_INSTALL_DIR'" >> $SCRIPT
echo "./ATC-pie.py \"\$@\"" >> $SCRIPT
chmod 755 $SCRIPT
fi
@@ -1091,7 +1291,7 @@ fi
# OPENRADAR
#######################################################
OR_INSTALL_DIR=openradar
INSTALL_DIR_OR=$INSTALL_DIR/$OR_INSTALL_DIR
INSTALL_DIR_OR="$INSTALL_DIR/$OR_INSTALL_DIR"
cd "$CBD"
if _elementIn "OPENRADAR" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -1107,7 +1307,7 @@ if _elementIn "OPENRADAR" "${WHATTOBUILD[@]}"; then
SCRIPT=run_openradar.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd \"\$(dirname \"\$0\")\"" >> $SCRIPT
echo "cd install/OpenRadar" >> $SCRIPT
echo "java -jar OpenRadar.jar" >> $SCRIPT
chmod 755 $SCRIPT
@@ -1118,7 +1318,7 @@ fi
#######################################################
TG_INSTALL_DIR=terragear
INSTALL_DIR_TG=$INSTALL_DIR/$TG_INSTALL_DIR
INSTALL_DIR_TG="$INSTALL_DIR/$TG_INSTALL_DIR"
cd "$CBD"
if _elementIn "TERRAGEAR" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -1128,14 +1328,21 @@ if _elementIn "TERRAGEAR" "${WHATTOBUILD[@]}"; then
mkdir -p "terragear"
cd "$CBD"/terragear
_gitDownload TERRAGEAR
_gitUpdate scenery/ws2.0
if [ "$STABLE" = "STABLE" ]; then
branch='scenery/ws2.0'
else
branch='next'
fi
_gitUpdate "$branch"
if [ "$RECONFIGURE" = "y" ]; then
cd "$CBD"
mkdir -p build/terragear
cd "$CBD"/build/terragear
rm -f CMakeCache.txt
"$CMAKE" -DCMAKE_BUILD_TYPE="Debug" \
"$CMAKE" -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_DIR_TG" \
-DCMAKE_PREFIX_PATH="$INSTALL_DIR_SIMGEAR;$INSTALL_DIR_CGAL" \
../../terragear/ 2>&1 | _logOutput
@@ -1145,25 +1352,27 @@ if _elementIn "TERRAGEAR" "${WHATTOBUILD[@]}"; then
cd "$CBD"
echo "#!/bin/sh" > run_tg-construct.sh
echo "cd $(dirname $0)" >> run_tg-construct.sh
echo "cd \"\$(dirname \"\$0\")\"" >> run_tg-construct.sh
echo "cd install/terragear/bin" >> run_tg-construct.sh
echo "export LD_LIBRARY_PATH=$INSTALL_DIR_SIMGEAR/lib\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}" \
echo "export LD_LIBRARY_PATH='$INSTALL_DIR_SIMGEAR/lib'\"\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}\"" \
>> run_tg-construct.sh
echo "./tg-construct \$@" >> run_tg-construct.sh
echo "./tg-construct \"\$@\"" >> run_tg-construct.sh
echo "#!/bin/sh" > run_ogr-decode.sh
echo "cd $(dirname $0)" >> run_ogr-decode.sh
echo "cd \"\$(dirname \"\$0\")\"" >> run_ogr-decode.sh
echo "cd install/terragear/bin" >> run_ogr-decode.sh
echo "export LD_LIBRARY_PATH=$INSTALL_DIR_SIMGEAR/lib\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}" \
echo "export LD_LIBRARY_PATH='$INSTALL_DIR_SIMGEAR/lib'\"\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}\"" \
>> run_ogr-decode.sh
echo "./ogr-decode \$@" >> run_ogr-decode.sh
echo "./ogr-decode \"\$@\"" >> run_ogr-decode.sh
echo "#!/bin/sh" > run_genapts850.sh
echo "cd $(dirname $0)" >> run_genapts850.sh
echo "cd \"\$(dirname \"\$0\")\"" >> run_genapts850.sh
echo "cd install/terragear/bin" >> run_genapts850.sh
echo "export LD_LIBRARY_PATH=$INSTALL_DIR_SIMGEAR/lib\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}" \
echo "export LD_LIBRARY_PATH='$INSTALL_DIR_SIMGEAR/lib'\"\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}\"" \
>> run_genapts850.sh
echo "./genapts850 \$@" >> run_genapts850.sh
echo "./genapts850 \"\$@\"" >> run_genapts850.sh
chmod 755 run_tg-construct.sh run_ogr-decode.sh run_genapts850.sh
fi
_logSep
@@ -1172,7 +1381,7 @@ _logSep
#######################################################
TGGUI_INSTALL_DIR=terrageargui
INSTALL_DIR_TGGUI=$INSTALL_DIR/$TGGUI_INSTALL_DIR
INSTALL_DIR_TGGUI="$INSTALL_DIR/$TGGUI_INSTALL_DIR"
cd "$CBD"
if _elementIn "TERRAGEARGUI" "${WHATTOBUILD[@]}"; then
_printLog "****************************************"
@@ -1198,22 +1407,26 @@ if _elementIn "TERRAGEARGUI" "${WHATTOBUILD[@]}"; then
_make terrageargui
cd "$CBD"
# Fill TerraGear Root field
if [ ! -f ~/.config/TerraGear/TerraGearGUI.conf ]; then
_log "Fill TerraGear Root field"
echo "[paths]" > TerraGearGUI.conf
echo "terragear=$INSTALL_DIR_TG/bin" >> TerraGearGUI.conf
cfgFile="$HOME/.config/TerraGear/TerraGearGUI.conf"
if [ ! -f "$cfgFile" ]; then
_log "Writing a default config file for TerraGear GUI: $cfgFile"
mkdir -p ~/.config/TerraGear
mv TerraGearGUI.conf ~/.config/TerraGear
echo "[paths]" > "$cfgFile"
echo "terragear=$INSTALL_DIR_TG" >> "$cfgFile"
echo "flightgear=$INSTALL_DIR_FGFS/fgdata" >> "$cfgFile"
fi
_log "Create run_terrageargui.sh"
echo "#!/bin/sh" > run_terrageargui.sh
echo "cd \$(dirname \$0)" >> run_terrageargui.sh
echo "cd install/terrageargui/bin" >> run_terrageargui.sh
echo "export LD_LIBRARY_PATH=$INSTALL_DIR_SIMGEAR/lib\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}" \
>> run_terrageargui.sh
echo "./TerraGUI \$@" >> run_terrageargui.sh
SCRIPT=run_terrageargui.sh
_log "Creating $SCRIPT"
cat >"$SCRIPT" <<EndOfScriptText
#! /bin/sh
cd "\$(dirname "\$0")"
cd '$SUB_INSTALL_DIR/$TGGUI_INSTALL_DIR/bin'
export LD_LIBRARY_PATH='$INSTALL_DIR_SIMGEAR/lib'"\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH}"
./TerraGUI "\$@"
EndOfScriptText
chmod 755 "$SCRIPT"
fi
# Print optional package alternatives that didn't match (this helps with

View File

@@ -1,41 +1,40 @@
## fg-from-scratch
Windows utility to download, compile, and stage TerraGear and its dependencies
Copyright (C) 2018 Scott Giese (xDraconian) scttgs0@gmail.com
Copyright (C) 2018-2019 Scott Giese (xDraconian) scttgs0@gmail.com
### Purpose:
Simplify the process of producing a working version of the TerraGear tools for Windows users.
Simplify the process of producing a working version of the OSG, SimGear, FlightGear, and TerraGear for Windows users.
If you find this script useful, or not useful, please share your experience with me via a brief email.
### Approach:
Rather than leveraging the popular Win.3rdParty download, this script compiles all dependencies
on your hardware. This eliminates many of the problems associated with mixed compilation in which
your compiled binary become in conflict with 3rd-party binaries.
your compiled binary comes into conflict with 3rd-party binaries.
vcpkg is leveraged to download and compile all the dependencies required by TerraGear.
This script could be expanded to include compiling FlightGear and/or any of the other FlightGear
submodules (FGCom, Atlas, OpenRadar, etc.)
vcpkg is leveraged to download and compile all the dependencies required.
### Supported Platform:
Windows 10
### Prerequisites:
Visual Studio Community 2017
Visual Studio Community 2017 +
https://www.visualstudio.com/downloads/
Include the C++ package which includes the MSVC 19.14 compiler
CMake 3.11.3
CMake 3.11.3 +
https://cmake.org/download/
The script assumes the installation folder is c:\Program Files\.
Qt 5.10.1
Qt 5.10.1 +
https://www.qt.io/download/
The script assumes the installation folder is C:\Qt\.
Git 2.17.1
Git 2.17.1 +
https://git-scm.com/download/win/
The script assumes the installation folder is reflected on your PATH.
Author's configuration: Visual Studio Community 2019, CMake 3.15.3, Qt 5.13.1, Git 2.18.0
### Recommended:
Before running the script for the first time, set this environment variable:
@@ -47,23 +46,29 @@ You can execute the above command via a Command Terminal or via Powershell Admin
### Usage:
The script is intended to be run multiple times. During the first execution, all the packages are downloaded and compiled. Any time the script is executed afterward, the packages will update themselves.
<i>Note: Because failures can sometimes occur, the script will download packages after the first execution. Once you confirm that all packages have successfully been downloaded, you can optimize the script by adding <b>REM</b> at the beginning of the line. Refer to the comments within the script.</i>
<i>Note: Because failures can occur, the script will continue to download packages even after the first execution.</i>
Run the command script interactively. No log is produced.
fg-from-scratch.cmd
Runs the command script and routes STDOUT and STDERR to a log file. **The prompts have been removed, so it is no longer necessary to monitor the log while it is running.**
Run the command script and routes STDOUT and STDERR to a log file.
fg-from-scratch.cmd > scratch.log 2>&1
**Fix for the "White Text" issue** - pass either -wt or - -whitetext as an argument:
fg-from-scratch.cmd -wt > scratch.log 2>&1
The above command will force the usage of James' customized OSG source repo to leverage his workaround.
Options for monitoring the log file while the script is running:
Start the script and then
- Load the log file into Notepad++ (https://notepad-plus-plus.org/).
- Turn on feature "Monitor" via Notepad++
- **[Preferred]** Load the log file into WinTail (http://www.baremetalsoft.com/wintail/)
### Example Project
### TerraGear Example Project
Refer to CustomSceneryProjects/Test folder for an example of scenery generation.
generate.cmd > generate.log 2>&1

View File

@@ -1,4 +1,4 @@
@ECHO OFF
@echo OFF
REM fg-from-scratch - Windows utility to download, compile, and stage TerraGear and its dependencies
REM Copyright (C) 2018 Scott Giese (xDraconian) scttgs0@gmail.com
@@ -17,201 +17,382 @@ REM You should have received a copy of the GNU General Public License
REM along with this program; if not, write to the Free Software
REM Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
SET ROOT_DIR=%CD%
SET PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/bin;%PATH%
SET CMAKE_TOOLCHAIN="Visual Studio 15 2017 Win64"
SET QT5x64=C:/Qt/5.10.1/msvc2017_64
REM Defaults
set ROOT_DIR=%CD%
set WHITE_TEXT_FIX=0
set OSG_SOURCE_PATH=scratch-source/openscenegraph-3.6-git
set OSG_BUILD_PATH=scratch-build/openscenegraph-3.6
set WT_GDAL_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include
set WT_GDAL_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/gdal.lib
set WT_GDAL_LIBRARY_DEBUG=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/gdald.lib
IF NOT EXIST vcpkg-git/NUL (
REM Process arguments
:parse
if "%~1"=="" goto endparse
if "%~1"=="-wt" (
set WHITE_TEXT_FIX=1
set OSG_SOURCE_PATH=scratch-source/openscenegraph-fix-git
set OSG_BUILD_PATH=scratch-build/openscenegraph-fix
set WT_GDAL_INCLUDE_DIR=
set WT_GDAL_LIBRARY=
set WT_GDAL_LIBRARY_DEBUG=
)
if "%~1"=="--whitetext" (
set WHITE_TEXT_FIX=1
set OSG_SOURCE_PATH=scratch-source/openscenegraph-fix-git
set OSG_BUILD_PATH=scratch-build/openscenegraph-fix
set WT_GDAL_INCLUDE_DIR=
set WT_GDAL_LIBRARY=
set WT_GDAL_LIBRARY_DEBUG=
)
SHIFT
goto parse
:endparse
echo White Text Fix: %WHITE_TEXT_FIX%
echo %OSG_SOURCE_PATH%
echo %OSG_BUILD_PATH%
set PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/bin;%ROOT_DIR%/vcpkg-git/installed/x64-windows/include;%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib;%PATH%
REM Determine location of Qt5
set QT_SELECT=qt5
for /f %%i in ('"qtpaths.exe --install-prefix"') do set QT5x64=%%i
set QT5x64_LIB=%QT5x64%/lib
set QT5x64_CMAKE=%QT5x64_LIB%/cmake
echo QT Folder: %QT5x64%
REM Determine CMake toolchain
set CMAKE_TOOLCHAIN=Visual Studio 14 2015 Win64
for /f %%v in ('"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere" -latest -property catalog_productlineversion') do set VSx64=%%v
if %VSx64%==2019 (set CMAKE_TOOLCHAIN="Visual Studio 16 2019")
if %VSx64%==2017 (set CMAKE_TOOLCHAIN="Visual Studio 15 2017 Win64")
if %VSx64%==2015 (set CMAKE_TOOLCHAIN="Visual Studio 14 2015 Win64")
echo CMake Toolchain: %CMAKE_TOOLCHAIN%
if not exist vcpkg-git/NUL (
echo Preparing to install external libraries via vcpkg . . .
git clone https://github.com/Microsoft/vcpkg.git vcpkg-git
echo Compiling vcpkg
cd vcpkg-git
call ./bootstrap-vcpkg
call .\bootstrap-vcpkg
echo Compiling external libraries . . .
vcpkg install --triplet x64-windows boost cgal curl freeglut freetype gdal glew jasper libxml2 openal-soft openjpeg openssl plib sdl2 tiff zlib
) ELSE (
vcpkg install --triplet x64-windows boost cgal curl freeglut freetype gdal glew jasper libpng libxml2 mpfr openal-soft openjpeg openssl plib sdl2 tiff zlib
) else (
echo Updating vcpkg . . .
cd vcpkg-git
git pull
REM for /f "delims=" %%G in ('"git pull"') do if not %%G == "Already up to date." (
echo Compiling vcpkg
call .\bootstrap-vcpkg
REM break
REM )
echo Updating external libraries . . .
vcpkg update
vcpkg upgrade --triplet x64-windows --no-dry-run
REM Okay to comment out this line once all the packages have been confirmed to have been installed
vcpkg install --triplet x64-windows boost cgal curl freeglut freetype gdal glew jasper libxml2 openal-soft openjpeg openssl plib sdl2 tiff zlib
echo Compiling external libraries . . .
vcpkg install --triplet x64-windows boost cgal curl freeglut freetype gdal glew jasper libxml2 libpng mpfr openal-soft openjpeg openssl plib sdl2 tiff zlib
)
cd %ROOT_DIR%
IF NOT EXIST openscenegraph-3.4-build/NUL (
mkdir openscenegraph-3.4-build
if not exist scratch-source/NUL (
mkdir scratch-source
)
IF NOT EXIST openscenegraph-3.4-git/NUL (
echo Downloading OpenSceneGraph . . .
git clone -b OpenSceneGraph-3.4 https://github.com/openscenegraph/OpenSceneGraph.git openscenegraph-3.4-git
) ELSE (
echo Updating OpenSceneGraph . . .
cd openscenegraph-3.4-git
git pull
if not exist scratch-build/NUL (
mkdir scratch-build
)
if not exist scratch-install/NUL (
mkdir scratch-install
)
if %WHITE_TEXT_FIX%==1 (
if not exist scratch-build/openscenegraph-fix/NUL (
mkdir scratch-build\openscenegraph-fix
)
if not exist scratch-source/openscenegraph-fix-git/NUL (
echo Downloading OpenSceneGraph . . .
git clone -b fgfs-342-1 https://github.com/zakalawe/osg.git scratch-source/openscenegraph-fix-git
) else (
echo Updating OpenSceneGraph . . .
cd scratch-source/openscenegraph-fix-git
git pull
)
) else (
if not exist scratch-build/openscenegraph-3.6/NUL (
mkdir scratch-build\openscenegraph-3.6
)
if not exist scratch-source/openscenegraph-3.6-git/NUL (
echo Downloading OpenSceneGraph . . .
git clone -b OpenSceneGraph-3.6 https://github.com/openscenegraph/OpenSceneGraph.git scratch-source/openscenegraph-3.6-git
) else (
echo Updating OpenSceneGraph . . .
cd scratch-source/openscenegraph-3.6-git
git pull
)
)
cd %ROOT_DIR%
IF NOT EXIST simgear-build/NUL (
mkdir simgear-build
if not exist scratch-build/simgear/NUL (
mkdir scratch-build\simgear
)
IF NOT EXIST simgear-git/NUL (
if not exist scratch-source/simgear-git/NUL (
echo Downloading SimGear . . .
git clone -b next https://git.code.sf.net/p/flightgear/simgear simgear-git
) ELSE (
git clone -b next https://git.code.sf.net/p/flightgear/simgear scratch-source/simgear-git
) else (
echo Updating SimGear . . .
cd simgear-git
cd scratch-source/simgear-git
git pull
)
cd %ROOT_DIR%
IF NOT EXIST flightgear-build/NUL (
mkdir flightgear-build
if not exist scratch-build/flightgear/NUL (
mkdir scratch-build\flightgear
)
IF NOT EXIST flightgear-git/NUL (
if not exist scratch-source/flightgear-git/NUL (
echo Downloading FlightGear . . .
git clone -b next https://git.code.sf.net/p/flightgear/flightgear flightgear-git
) ELSE (
git clone -b next https://git.code.sf.net/p/flightgear/flightgear scratch-source/flightgear-git
) else (
echo Updating FlightGear . . .
cd flightgear-git
cd scratch-source/flightgear-git
git pull
)
cd %ROOT_DIR%
IF NOT EXIST terragear-build/NUL (
mkdir terragear-build
if not exist scratch-build/terragear/NUL (
mkdir scratch-build\terragear
)
IF NOT EXIST terragear-git/NUL (
if not exist scratch-source/terragear-git/NUL (
echo Downloading TerraGear . . .
git clone -b next https://git.code.sf.net/p/flightgear/terragear terragear-git
) ELSE (
git clone -b next https://git.code.sf.net/p/flightgear/terragear scratch-source/terragear-git
) else (
echo Updating TerraGear . . .
cd terragear-git
cd scratch-source/terragear-git
git pull
)
cd %ROOT_DIR%
ECHO Compiling OpenSceneGraph . . .
cd openscenegraph-3.4-build
cmake ..\openscenegraph-3.4-git -G %CMAKE_TOOLCHAIN% ^
REM -DQt5Core_DIR=%QT5x64_CMAKE%/Qt5Core ^
REM -DQt5Gui_DIR=%QT5x64_CMAKE%/Qt5Gui ^
REM -DQt5OpenGL_DIR=%QT5x64_CMAKE%/Qt5OpenGL ^
REM -DQt5Widgets_DIR=%QT5x64_CMAKE%/Qt5Widgets ^
echo Compiling OpenSceneGraph . . .
cd %OSG_BUILD_PATH%
cmake ..\..\%OSG_SOURCE_PATH% -G %CMAKE_TOOLCHAIN% ^
-DCMAKE_CONFIGURATION_TYPES:STRING=Debug;Release ^
-DCMAKE_BUILD_TYPE:STRING=Release ^
-DCMAKE_INSTALL_PREFIX:PATH=%ROOT_DIR%/scratch-install ^
-DCMAKE_PREFIX_PATH:STRING=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib;%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib ^
-DACTUAL_3RDPARTY_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows ^
-DCMAKE_CONFIGURATION_TYPES=Debug;Release ^
-DCMAKE_INSTALL_PREFIX:PATH=%ROOT_DIR%/Stage ^
-DOSG_USE_UTF8_FILENAME:BOOL=1 ^
-DWIN32_USE_MP:BOOL=1 ^
-DCURL_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DCURL_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/libcurl.lib ^
-DFREETYPE_INCLUDE_DIR_ft2build=%ROOT_DIR%/vcpkg-git/packages/freetype_x64-windows/include ^
-DFREETYPE_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DFREETPE_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/freetype.lib ^
-DGDAL_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DGDAL_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/gdal.lib ^
-DGLUT_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DGLUT_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/freeglut.lib ^
-DJPEG_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DJPEG_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/jpeg.lib ^
-DLIBXML2_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DLIBXML2_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/libxml2.lib ^
-DPNG_PNG_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DPNG_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/libpng16.lib ^
-DSDL2_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DSDL2_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/SDL2.lib ^
-DSDL2MAIN_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/manual-link/SDL2main.lib ^
-DTIFF_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DTIFF_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/tiff.lib ^
-DZLIB_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DZLIB_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/zlib.lib
-DCURL_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DCURL_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/libcurl.lib ^
-DCURL_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/libcurl.lib ^
-DFREETYPE_INCLUDE_DIR_ft2build:PATH=%ROOT_DIR%/vcpkg-git/packages/freetype_x64-windows/include ^
-DFREETYPE_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/freetype.lib ^
-DFREETYPE_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/freetyped.lib ^
-DGDAL_INCLUDE_DIR:PATH=%WT_GDAL_INCLUDE_DIR% ^
-DGDAL_LIBRARY:FILEPATH=%WT_GDAL_LIBRARY% ^
-DGDAL_LIBRARY_DEBUG:FILEPATH=%WT_GDAL_LIBRARY_DEBUG% ^
-DGLUT_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DGLUT_LIBRARY:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/freeglut.lib ^
-DGLUT_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/freeglut.lib ^
-DJPEG_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DJPEG_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/jpeg.lib ^
-DJPEG_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/jpeg.lib ^
-DLIBXML2_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DLIBXML2_LIBRARY:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/libxml2.lib ^
-DLIBXML2_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/libxml2.lib ^
-DPNG_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DPNG_LIBRARY:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/libpng16.lib ^
-DPNG_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/libpng16d.lib ^
-DSDL2_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DSDL2_LIBRARY:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/SDL2.lib ^
-DSDL2MAIN_LIBRARY:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/manual-link/SDL2main.lib ^
-DTIFF_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DTIFF_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/tiff.lib ^
-DTIFF_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/tiffd.lib ^
-DZLIB_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DZLIB_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/zlib.lib ^
-DZLIB_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/zlibd.lib
cmake --build . --config Release --target INSTALL
cd %ROOT_DIR%
ECHO Compiling SimGear . . .
cd simgear-build
cmake ..\simgear-git -G %CMAKE_TOOLCHAIN% ^
-DCMAKE_BUILD_TYPE=Release ^
-DMSVC_3RDPARTY_ROOT=%ROOT_DIR%/vcpkg-git/installed/x64-windows ^
-DCMAKE_PREFIX_PATH:PATH=%ROOT_DIR%/Stage/lib;%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib ^
-DCMAKE_CONFIGURATION_TYPES=Debug;Release ^
-DCMAKE_INSTALL_PREFIX:PATH=%ROOT_DIR%/Stage ^
echo Compiling SimGear . . .
cd scratch-build\simgear
cmake ..\..\scratch-source\simgear-git -G %CMAKE_TOOLCHAIN% ^
-DCMAKE_CONFIGURATION_TYPES:STRING=Debug;Release ^
-DCMAKE_BUILD_TYPE:STRING=Release ^
-DMSVC_3RDPARTY_ROOT:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows ^
-DCMAKE_PREFIX_PATH:STRING=%ROOT_DIR%/scratch-install/lib;%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib ^
-DCMAKE_INCLUDE_PATH:STRING=%ROOT_DIR%/scratch-install/include;%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DCMAKE_INSTALL_PREFIX:PATH=%ROOT_DIR%/scratch-install ^
-DOSG_FSTREAM_EXPORT_FIXED:BOOL=1 ^
-DENABLE_GDAL:BOOL=1 ^
-DENABLE_OPENMP:BOOL=1 ^
-DUSE_AEONWAVE:BOOL=0 ^
-DBOOST_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DBOOST_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows ^
-DCURL_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DCURL_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/libcurl.lib ^
-DGDAL_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DGDAL_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/gdal.lib ^
-DOPENAL_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DOPENAL_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/OpenAL32.lib ^
-DZLIB_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DZLIB_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/zlib.lib
-DBoost_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DBoost_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows ^
-DCURL_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DCURL_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/libcurl.lib ^
-DCURL_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/libcurl.lib ^
-DGDAL_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DGDAL_LIBRARY:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/gdal.lib ^
-DOPENAL_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DOPENAL_LIBRARY:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/OpenAL32.lib ^
-DOPENTHREADS_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOPENTHREADS_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/OpenThreads.lib ^
-DOPENTHREADS_LIBRARY_DEBUG:FILEPATH= ^
-DOSGDB_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGDB_LIBRARY_DEBUG:FILEPATH= ^
-DOSGDB_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgDB.lib ^
-DOSGGA_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGGA_LIBRARY_DEBUG:FILEPATH= ^
-DOSGGA_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgGA.lib ^
-DOSGPARTICLE_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGPARTICLE_LIBRARY_DEBUG:FILEPATH= ^
-DOSGPARTICLE_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgParticle.lib ^
-DOSGSIM_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGSIM_LIBRARY_DEBUG:FILEPATH= ^
-DOSGSIM_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgSim.lib ^
-DOSGTEXT_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGTEXT_LIBRARY_DEBUG:FILEPATH= ^
-DOSGTEXT_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgText.lib ^
-DOSGUTIL_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGUTIL_LIBRARY_DEBUG:FILEPATH= ^
-DOSGUTIL_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgUtil.lib ^
-DOSGVIEWER_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGVIEWER_LIBRARY_DEBUG:FILEPATH= ^
-DOSGVIEWER_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgViewer.lib ^
-DOSG_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSG_LIBRARY_DEBUG:FILEPATH= ^
-DOSG_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osg.lib ^
-DZLIB_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DZLIB_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/zlibd.lib ^
-DZLIB_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/zlib.lib
cmake --build . --config Release --target INSTALL
cd %ROOT_DIR%
ECHO Compiling FlightGear . . .
cd flightgear-build
cmake ..\flightgear-git -G %CMAKE_TOOLCHAIN% ^
-DMSVC_3RDPARTY_ROOT=%ROOT_DIR%/vcpkg-git/installed/x64-windows ^
-DCMAKE_PREFIX_PATH:PATH=%ROOT_DIR%/Stage/lib;%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib;%QT5x64% ^
-DCMAKE_CONFIGURATION_TYPES=Debug;Release ^
-DCMAKE_INSTALL_PREFIX:PATH=%ROOT_DIR%/Stage ^
REM -DENABLE_GDAL:BOOL=1 ^
REM -DENABLE_OPENMP:BOOL=1 ^
REM -DUSE_AEONWAVE:BOOL=0 ^
echo Compiling FlightGear . . .
cd scratch-build\flightgear
cmake ..\..\scratch-source\flightgear-git -G %CMAKE_TOOLCHAIN% ^
-DCMAKE_CONFIGURATION_TYPES:STRING=Debug;Release ^
-DCMAKE_BUILD_TYPE:STRING=Release ^
-DMSVC_3RDPARTY_ROOT:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows ^
-DCMAKE_PREFIX_PATH:STRING=%ROOT_DIR%/scratch-install/lib;%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib;%QT5x64_LIB% ^
-DCMAKE_INCLUDE_PATH:STRING=%ROOT_DIR%/scratch-install/include;%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DCMAKE_INSTALL_PREFIX:PATH=%ROOT_DIR%/scratch-install ^
-DSimGear_DIR:PATH=%ROOT_DIR%/scratch-install/lib/cmake/SimGear ^
-DOSG_FSTREAM_EXPORT_FIXED:BOOL=1 ^
-DENABLE_GDAL:BOOL=1 ^
-DENABLE_OPENMP:BOOL=1 ^
-DENABLE_JSBSIM:BOOL=1 ^
-DENABLE_GPSSMOOTH:BOOL=1 ^
-DENABLE_FGVIEWER:BOOL=1 ^
-DENABLE_FGVIEWER:BOOL=0 ^
-DENABLE_FGELEV:BOOL=0 ^
-DENABLE_STGMERGE:BOOL=0 ^
-DWITH_FGPANEL:BOOL=0 ^
-DUSE_AEONWAVE:BOOL=0 ^
-DHAVE_CONFIG_H:BOOL=0 ^
-DFREETYPE_INCLUDE_DIR_ft2build=%ROOT_DIR%/vcpkg-git/packages/freetype_x64-windows/include ^
-DGDAL_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DGDAL_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/gdal.lib ^
-DOPENAL_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DOPENAL_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/OpenAL32.lib ^
-DPLIB_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DPNG_PNG_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DPNG_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/libpng16.lib ^
-DZLIB_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DZLIB_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/zlib.lib
-DBoost_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DBoost_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows ^
-DFREETYPE_INCLUDE_DIR_ft2build:PATH=%ROOT_DIR%/vcpkg-git/packages/freetype_x64-windows/include ^
-DFREETYPE_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/freetype.lib ^
-DFREETYPE_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/freetyped.lib ^
-DGDAL_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DGDAL_LIBRARY:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/gdal.lib ^
-DOPENAL_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DOPENAL_LIBRARY:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/OpenAL32.lib ^
-DOPENTHREADS_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOPENTHREADS_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/OpenThreads.lib ^
-DOPENTHREADS_LIBRARY_DEBUG:FILEPATH= ^
-DOSGDB_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGDB_LIBRARY_DEBUG:FILEPATH= ^
-DOSGDB_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgDB.lib ^
-DOSGFX_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGFX_LIBRARY_DEBUG:FILEPATH= ^
-DOSGFX_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgFX.lib ^
-DOSGGA_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGGA_LIBRARY_DEBUG:FILEPATH= ^
-DOSGGA_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgGA.lib ^
-DOSGPARTICLE_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGPARTICLE_LIBRARY_DEBUG:FILEPATH= ^
-DOSGPARTICLE_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgParticle.lib ^
-DOSGSIM_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGSIM_LIBRARY_DEBUG:FILEPATH= ^
-DOSGSIM_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgSim.lib ^
-DOSGTEXT_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGTEXT_LIBRARY_DEBUG:FILEPATH= ^
-DOSGTEXT_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgText.lib ^
-DOSGUTIL_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGUTIL_LIBRARY_DEBUG:FILEPATH= ^
-DOSGUTIL_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgUtil.lib ^
-DOSGVIEWER_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSGVIEWER_LIBRARY_DEBUG:FILEPATH= ^
-DOSGVIEWER_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osgViewer.lib ^
-DOSG_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DOSG_LIBRARY_DEBUG:FILEPATH= ^
-DOSG_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/scratch-install/lib/osg.lib ^
-DPLIB_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DPLIB_FNT_LIBRARY_DEBUG:FILEPATH= ^
-DPLIB_FNT_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/plib_fnt.lib ^
-DPLIB_PUAUX_LIBRARY_DEBUG:FILEPATH= ^
-DPLIB_PUAUX_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/plib_puAux.lib ^
-DPLIB_PUI_LIBRARY_DEBUG:FILEPATH= ^
-DPLIB_PUI_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/plib_pui.lib ^
-DPLIB_SG_LIBRARY_DEBUG:FILEPATH= ^
-DPLIB_SG_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/plib_sg.lib ^
-DPLIB_UL_LIBRARY_DEBUG:FILEPATH= ^
-DPLIB_UL_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/plib_ul.lib ^
-DPNG_PNG_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DPNG_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/libpng16.lib ^
-DZLIB_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DZLIB_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/zlibd.lib ^
-DZLIB_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/zlib.lib
cmake --build . --config Release --target INSTALL
cd %ROOT_DIR%
ECHO Compiling TerraGear . . .
cd terragear-build
cmake ..\terragear-git -G %CMAKE_TOOLCHAIN% ^
-DCMAKE_PREFIX_PATH:PATH=%ROOT_DIR%/Stage/lib;%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib;%QT5x64% ^
-DCMAKE_CONFIGURATION_TYPES=Debug;Release ^
-DCMAKE_INSTALL_PREFIX:PATH=%ROOT_DIR%/Stage ^
-DMSVC-3RDPARTY_ROOT= ^
-DBoost_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DBoost_LIBRARY_DIR_DEBUG=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib ^
-DBoost_LIBRARY_DIR_RELEASE=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib ^
-DCGAL_DIR=%ROOT_DIR%/vcpkg-git/buildtrees/cgal/x64-windows-rel ^
-DGDAL_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DGDAL_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/gdal.lib ^
-DJPEG_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DJPEG_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/jpeg.lib ^
-DTIFF_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DTIFF_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/tiff.lib ^
-DZLIB_INCLUDE_DIR=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DZLIB_LIBRARY=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/zlib.lib ^
-DSIMGEAR_INCLUDE_DIR=%ROOT_DIR%/Stage/include ^
-DSIMGEAR_CORE_LIBRARY=%ROOT_DIR%/Stage/lib/SimGearCore.lib ^
-DSIMGEAR_SCENE_LIBRARY=%ROOT_DIR%/Stage/lib/SimGearScene.lib
echo Compiling TerraGear . . .
cd scratch-build\terragear
cmake ..\..\scratch-source\terragear-git -G %CMAKE_TOOLCHAIN% ^
-DCMAKE_CONFIGURATION_TYPES:STRING=Debug;Release ^
-DCMAKE_BUILD_TYPE:STRING=Release ^
-DCMAKE_PREFIX_PATH:STRING=%ROOT_DIR%/scratch-install/lib;%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib;%QT5x64_LIB% ^
-DCMAKE_INCLUDE_PATH:STRING=%ROOT_DIR%/scratch-install/include;%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DCMAKE_INSTALL_PREFIX:PATH=%ROOT_DIR%/scratch-install ^
-DMSVC_3RDPARTY_ROOT:PATH= ^
-DBoost_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DBoost_LIBRARY_DIR_RELEASE:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib ^
-DCGAL_DIR:PATH=%ROOT_DIR%/vcpkg-git/buildtrees/cgal/x64-windows-rel ^
-DGDAL_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DGDAL_LIBRARY:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/gdal.lib ^
-DGMP_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DGMP_LIBRARIES_DIR:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib ^
-DJPEG_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DJPEG_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/jpeg.lib ^
-DJPEG_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/jpeg.lib ^
-DMPFR_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DMPFR_LIBRARIES_DIR:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib ^
-DTIFF_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DTIFF_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/tiffd.lib ^
-DTIFF_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/tiff.lib ^
-DZLIB_INCLUDE_DIR:PATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/include ^
-DZLIB_LIBRARY_DEBUG:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/debug/lib/zlibd.lib ^
-DZLIB_LIBRARY_RELEASE:FILEPATH=%ROOT_DIR%/vcpkg-git/installed/x64-windows/lib/zlib.lib ^
-DSIMGEAR_INCLUDE_DIR:PATH=%ROOT_DIR%/scratch-install/include ^
-DSIMGEAR_CORE_LIBRARY_RELEASE=%ROOT_DIR%/scratch-install/lib/SimGearCore.lib ^
-DSIMGEAR_SCENE_LIBRARY_RELEASE=%ROOT_DIR%/scratch-install/lib/SimGearScene.lib
cmake --build . --config Release --target INSTALL
cd %ROOT_DIR%
REM TerraGear is expecting proj.dll instead of proj_4_9.dll, clone it so TG may find it.
for %%i in (vcpkg-git\installed\x64-windows\bin\proj*.dll) do copy /Y %%i Stage\bin\proj.dll
for %%i in (vcpkg-git\installed\x64-windows\bin\proj*.dll) do copy /Y %%i scratch-install\bin\proj.dll
ECHO All done!
echo All done!

2
fgdata

Submodule fgdata updated: 67bf0c8e19...7309ffef42

View File

@@ -18,22 +18,26 @@ rm -rf $WORKSPACE/dist/include/simgear $WORKSPACE/dist/libSim* $WORKSPACE/dist/l
PATH=$PATH:$QTPATH
echo "Build path is: $PATH"
# this shoudl not be needed, since this is inside CMAKE_INSTALL_PREFIX, but seemed
# to be necessary all the same
#export PKG_CONFIG_PATH=$WORKSPACE/dist/lib/pkgconfig
cmakeCommonArgs="-G Ninja -DCMAKE_INSTALL_PREFIX:PATH=$WORKSPACE/dist -DCMAKE_BUILD_TYPE=RelWithDebInfo"
###############################################################################
echo "Starting on SimGear"
pushd sgBuild
cmake -DCMAKE_INSTALL_PREFIX:PATH=$WORKSPACE/dist -DCMAKE_BUILD_TYPE=RelWithDebInfo ../simgear
cmake ${cmakeCommonArgs} ../simgear
# compile
make
cmake --build . --target debug_symbols
cmake --build . --target install
if [ $? -ne '0' ]; then
echo "make simgear failed"
exit 1
fi
make install
popd
################################################################################
@@ -46,21 +50,22 @@ else
FGBUILDTYPE=Nightly
fi
cmake -DFG_BUILD_TYPE=$FGBUILDTYPE -DCMAKE_INSTALL_PREFIX:PATH=$WORKSPACE/dist -DCMAKE_BUILD_TYPE=RelWithDebInfo ../flightgear
cmake -DFG_BUILD_TYPE=$FGBUILDTYPE -DENABLE_SWIFT:BOOL=ON ${cmakeCommonArgs} ../flightgear
make
cmake --build . --target debug_symbols
cmake --build . --target install
if [ $? -ne '0' ]; then
echo "make flightgear failed"
exit 1
fi
make install
popd
chmod +x $WORKSPACE/dist/bin/osgversion
echo "Running symbol upload script"
./sentry-dSYM-upload-mac.sh
################################################################################

View File

@@ -31,6 +31,8 @@ $osgSoVersion=runOsgVersion('so-number')
$openThreadsSoVersion=runOsgVersion('openthreads-soversion-number')
$codeSignIdentity = ENV['FG_CODESIGN_IDENTITY']
$keychain = ENV['FG_KEYCHAIN']
puts "Code signing identity is #{$codeSignIdentity}"
puts "osgVersion=#{osgVersion}, so-number=#{$osgSoVersion}"
@@ -41,7 +43,6 @@ $prefixDir=Dir.pwd + "/dist"
dmgDir=Dir.pwd + "/image"
srcDir=Dir.pwd + "/flightgear"
qmlDir=srcDir + "/src/GUI/qml"
puts "Erasing previous image dir"
`rm -rf #{dmgDir}`
@@ -54,11 +55,10 @@ bundle=dmgDir + "/FlightGear.app"
puts "Running macdeployqt on the bundle to copy Qt libraries"
`macdeployqt #{$prefixDir}/fgfs.app -qmldir=#{qmlDir}`
puts "Moving & renaming app bundle"
puts "Copying & renaming app bundle"
`mkdir -p #{dmgDir}`
`mv #{$prefixDir}/fgfs.app #{bundle}`
`rsync --archive --quiet #{$prefixDir}/fgfs.app/ #{bundle}`
bundle=dmgDir + "/FlightGear.app"
contents=bundle + "/Contents"
macosDir=contents + "/MacOS"
$frameworksDir=contents +"/Frameworks"
@@ -68,6 +68,7 @@ osgPluginsDir=contents+"/PlugIns/osgPlugins"
# for writing copyright year to Info.plist
t = Time.new
fgCurrentYear = t.year
fgBundleIdentifier = "org.flightgear.mac"
fgVersion = File.read("#{srcDir}/version").strip
volName="\"FlightGear #{fgVersion}\""
@@ -78,6 +79,7 @@ if $isRelease
else
dmgPath = Dir.pwd + "/output/FlightGear-#{fgVersion}-nightly.dmg"
dmgFullPath = Dir.pwd + "/output/FlightGear-#{fgVersion}-nightly-full.dmg"
fgBundleIdentifier = "org.flightgear.mac-nightly"
end
puts "Creating directory structure"
@@ -98,7 +100,7 @@ bins.each do |b|
`cp #{$prefixDir}/bin/#{b} #{outPath}`
end
puts "copying libraries"
puts "Copying OSG libraries"
$osgLibs.each do |l|
libFile = "lib#{l}.#{$osgSoVersion}.dylib"
`cp #{$prefixDir}/lib/#{libFile} #{$frameworksDir}`
@@ -108,6 +110,13 @@ end
libFile = "libOpenThreads.#{$openThreadsSoVersion}.dylib"
`cp #{$prefixDir}/lib/#{libFile} #{$frameworksDir}`
# DBus and libEvent needed for SWIFT
# Sentry is crash reporting
otherLibs = ['dbus-1.3', 'event_core-2.2.1', 'sentry']
otherLibs.each do |l|
`cp #{$prefixDir}/lib/lib#{l}.dylib #{$frameworksDir}`
end
$osgPlugins.each do |p|
pluginFile = "osgdb_#{p}.dylib"
`cp #{$prefixDir}/lib/osgPlugins/#{pluginFile} #{osgPluginsDir}`
@@ -135,27 +144,51 @@ File.open("#{contents}/Info.plist", 'w') { |f|
createArgs = "-format UDBZ -imagekey bzip2-level=9 -quiet -volname #{volName}"
# enable the hardened runtime and timestamp options, so notarization works
codeSignArgs = "--deep --options=runtime --timestamp"
if !$isRelease
# create the 'lite' DMG without the base files
# code sign the entire bundle once complete - v2 code-signing
puts "Signing #{bundle}"
`codesign --deep -s "#{$codeSignIdentity}" #{bundle}`
puts "Creating DMG"
`codesign #{codeSignArgs} --keychain #{$keychain} -s "#{$codeSignIdentity}" #{bundle}`
puts "Creating DMG without base-files"
`rm -f #{dmgPath}`
`hdiutil create -srcfolder #{dmgDir} #{createArgs} #{dmgPath}`
end
puts "Creating full image with data"
puts "Notarizing DMG #{dmgPath}"
`xcrun altool --notarize-app \
--primary-bundle-id "#{fgBundleIdentifier}" \
--username "zakalawe@mac.com" \
--password "@keychain:FlightGearAppStoreConnectUserName" \
--file #{dmgPath}`
else
puts "Creating full image with data"
puts "Copying base package files into the image"
`rsync -a fgdata/ #{resourcesDir}/data`
# re-sign the entire bundle
puts "Re-signing full #{bundle}"
`codesign --force --deep -s "#{$codeSignIdentity}" #{bundle}`
# sign the entire bundle
puts "Signing full app: #{bundle}"
`codesign --force #{codeSignArgs} --keychain #{$keychain} -s "#{$codeSignIdentity}" #{bundle}`
`rm -f #{dmgFullPath}`
`hdiutil create -srcfolder #{dmgDir} #{createArgs} #{dmgFullPath}`
puts "Notarizing DMG #{dmgFullPath}"
`xcrun altool --notarize-app \
--primary-bundle-id "#{fgBundleIdentifier}" \
--username "zakalawe@mac.com" \
--password "@keychain:FlightGearAppStoreConnectUserName" \
--file #{dmgFullPath}`
end
puts "Packaging complete"

View File

@@ -83,6 +83,7 @@ FORMAT_HANDLERS_NAMES = []
# qttools/src/linguist/shared/numerus.cpp).
PLURAL_FORMS = {
None: ["<master>"], # for the default (= master) translation
"ca": ["singular", "plural"],
"de": ["singular", "plural"],
"en": ["singular", "plural"],
"es": ["singular", "plural"],
@@ -92,6 +93,7 @@ PLURAL_FORMS = {
"pl": ["singular", "paucal", "plural"],
"pt": ["singular", "plural"],
"ru": ["singular", "plural"],
"sk": ["singular", "paucal", "plural"],
"zh": ["universal"] # universal form
}

View File

@@ -0,0 +1,26 @@
#!/bin/bash
#
# Create the scenery pack for a release distribution
# Make sure to
# * set SCENERY and point it to your local (full) mirror of terrasync scenery
# * name the SCENERY_PACK correctly
# * carefully select the tiles to copy, usually 2x2, 2x3 or 3x2 keeps the pack small enough
#
SCENERY=/path/to/your/scenery
SCENERY_PACK=SceneryPack.PHNL
TILES="w160n[12]0/w???n??"
if [ ! -d "$SCENERY" ]; then
echo "Scenery directory not found or not readable"
exit 1
fi
if [ ! -d "$SCENERY"/Objects -o ! -d "$SCENERY"/Terrain -o ! -d "$SCENERY"/Airports -o ! -d "$SCENERY"/Models ]; then
echo "Scenery directory does not look like a scenery directory"
exit 1
fi
rm -f SceneryPack.*.tgz
ln -s "$SCENERY" ${SCENERY_PACK}
tar --format=gnu --create --owner=root --group=root --gzip --exclude="**/.dirindex" --file=${SCENERY_PACK}.tgz ${SCENERY_PACK}/Objects/${TILES} ${SCENERY_PACK}/Terrain/${TILES} ${SCENERY_PACK}/Airports ${SCENERY_PACK}/Models
rm ${SCENERY_PACK}

15
sentry-dSYM-upload-mac.sh Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/sh
DWARF_DSYM_FOLDER_PATH=$WORKSPACE/dist/symbols
if which sentry-cli >/dev/null; then
export SENTRY_ORG=flightgear
export SENTRY_PROJECT=flightgear
# export SENTRY_AUTH_TOKEN=YOUR_AUTH_TOKEN
ERROR=$(sentry-cli upload-dif "$DWARF_DSYM_FOLDER_PATH" 2>&1 >/dev/null)
if [ ! $? -eq 0 ]; then
echo "warning: sentry-cli - $ERROR"
fi
else
echo "warning: sentry-cli not installed, download from https://github.com/getsentry/sentry-cli/releases"
fi

Submodule simgear updated: 6d89cc6c1d...af8b27032f

View File

@@ -1 +1 @@
2019.1.1
2020.1.2