Compare commits
84 Commits
release/20
...
version/20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b266f75da | ||
|
|
aeaebbbb10 | ||
|
|
33cbcf51f7 | ||
|
|
caeaa32ba8 | ||
|
|
ea7524899e | ||
|
|
29edfba044 | ||
|
|
1beae6304b | ||
|
|
73248547f9 | ||
|
|
49b584ffe7 | ||
|
|
06c7bbf557 | ||
|
|
399a3075c9 | ||
|
|
c24c41a998 | ||
|
|
94c09416d5 | ||
|
|
be5880ee19 | ||
|
|
500cf2e82c | ||
|
|
92c46f14c7 | ||
|
|
62ca4bb577 | ||
|
|
d7873fe00c | ||
|
|
9fcb01f81e | ||
|
|
04a518c23e | ||
|
|
598c65d3e9 | ||
|
|
cfb0f907e4 | ||
|
|
328fcda3f2 | ||
|
|
0fa6277203 | ||
|
|
06be626360 | ||
|
|
18cc06fa95 | ||
|
|
31c79982bf | ||
|
|
333dbb4aef | ||
|
|
71f48ae217 | ||
|
|
60eb8c32b6 | ||
|
|
cd500b70af | ||
|
|
aee62fc9e7 | ||
|
|
f88c149a3d | ||
|
|
5977af70aa | ||
|
|
9a6c1ee6e5 | ||
|
|
f416a7bcf7 | ||
|
|
fd4c8d8ffc | ||
|
|
714c4ac51c | ||
|
|
f17ed95af1 | ||
|
|
58608042ab | ||
|
|
87ebbd0d0e | ||
|
|
c5710b9877 | ||
|
|
a8cb045967 | ||
|
|
72916771df | ||
|
|
6501bf7731 | ||
|
|
c6d0ad04e6 | ||
|
|
0ceeec3cbf | ||
|
|
5ab8f3f350 | ||
|
|
ee9004d072 | ||
|
|
90360ebfd9 | ||
|
|
c43b8e0c07 | ||
|
|
05a3445a7f | ||
|
|
7d8d08097c | ||
|
|
d3828f3d68 | ||
|
|
ae84a587c6 | ||
|
|
f76fa38fed | ||
|
|
ef30051973 | ||
|
|
95e607c190 | ||
|
|
6db76c656c | ||
|
|
73b45b17a9 | ||
|
|
e61f4cbf9f | ||
|
|
cca622a860 | ||
|
|
aec7fcf83a | ||
|
|
72edacaaad | ||
|
|
80ed4b5ab4 | ||
|
|
35657c786f | ||
|
|
d90c55c215 | ||
|
|
40b6272570 | ||
|
|
a82e6f7f6b | ||
|
|
e34d02edbc | ||
|
|
3810a31230 | ||
|
|
00710497b0 | ||
|
|
420034d5b5 | ||
|
|
b3893f7bda | ||
|
|
4e28b88c22 | ||
|
|
fa0dcb5d4d | ||
|
|
819074136a | ||
|
|
03ac46120c | ||
|
|
cc76052038 | ||
|
|
3f38a3cf18 | ||
|
|
1c7dcaf5d5 | ||
|
|
dbdfc52a00 | ||
|
|
d4489091e2 | ||
|
|
6fa2edf9d5 |
10
.gitmodules
vendored
10
.gitmodules
vendored
@@ -1,11 +1,11 @@
|
||||
[submodule "simgear"]
|
||||
path = simgear
|
||||
url = ../simgear
|
||||
branch = release/2020.1
|
||||
branch = release/2020.3
|
||||
[submodule "flightgear"]
|
||||
path = flightgear
|
||||
url = ../flightgear
|
||||
branch = release/2020.1
|
||||
branch = release/2020.3
|
||||
[submodule "fgrun"]
|
||||
path = fgrun
|
||||
url = ../fgrun
|
||||
@@ -13,12 +13,12 @@
|
||||
[submodule "fgdata"]
|
||||
path = fgdata
|
||||
url = ../fgdata
|
||||
branch = release/2020.1
|
||||
branch = release/2020.3
|
||||
[submodule "windows-3rd-party"]
|
||||
path = windows-3rd-party
|
||||
url = ../windows-3rd-party
|
||||
branch = master
|
||||
branch = release/2020.3
|
||||
[submodule "getstart"]
|
||||
path = getstart
|
||||
url = ../getstart
|
||||
branch = release/2020.1
|
||||
branch = release/2020.3
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
; we copy everything in install/<arch>/bin except these, which aren't
|
||||
; useful to the end-user to ship
|
||||
#define ExcludedBinaries "*smooth.exe,metar.exe,js_demo.exe"
|
||||
#define ExcludedBinaries "*smooth.exe,metar.exe"
|
||||
|
||||
[Setup]
|
||||
AppId=FlightGear
|
||||
|
||||
98
build_appimage.sh
Executable file
98
build_appimage.sh
Executable file
@@ -0,0 +1,98 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# builds Appimage on Centos 7 using linuxdeployqt from continuous build
|
||||
# expects to work in $WORKSPACE, uses the contents of dist/{bin,share,lib64} copied into an appdir
|
||||
# missing qt plugins are copied in manually, as are osgPlugins
|
||||
# libcurl in SIMGEAR needs a setting to find the tls certificate, and OSG needs LD_LIBRARY_PATH so it can find osgPlugins
|
||||
# currently not including FGDATA, but this could be done easily once FG is updated to change Nav database checks from path to some kind of checksum
|
||||
#
|
||||
# issues/errors:
|
||||
# can't find qt translations - missing something in my build?
|
||||
#
|
||||
# errors/comments to enrogue@gmail.com
|
||||
|
||||
#clean up any previous build
|
||||
|
||||
rm -rf appdir
|
||||
|
||||
#create basic structure
|
||||
|
||||
mkdir -p appdir/usr/bin
|
||||
mkdir -p appdir/usr/lib
|
||||
mkdir -p appdir/usr/share
|
||||
mkdir -p appdir/usr/qml
|
||||
mkdir -p appdir/usr/ssl
|
||||
|
||||
#copy everything we need in
|
||||
|
||||
cp dist/bin/* appdir/usr/bin
|
||||
|
||||
cp -a dist/lib64/* appdir/usr/lib
|
||||
|
||||
# remove SimGearCore,Scene and any other static libs which leaked
|
||||
rm appdir/usr/lib/lib*.a
|
||||
|
||||
cp -a dist/lib64/osgPlugins-3.4.2 appdir/usr/lib
|
||||
|
||||
# adjust the rpath on the copied plugins, so they don't
|
||||
# require LD_LIBRARY_PATH to be set to load their dependencies
|
||||
# correctly
|
||||
patchelf --set-rpath \$ORIGIN/../ appdir/usr/lib/osgPlugins-3.4.2/*.so
|
||||
|
||||
cp -r dist/share appdir/usr
|
||||
|
||||
cp -a /usr/lib64/qt5/qml/QtQuick.2 appdir/usr/qml
|
||||
|
||||
cp /usr/lib64/libsoftokn3.* appdir/usr/lib
|
||||
cp /usr/lib64/libnsspem.so appdir/usr/lib
|
||||
cp /usr/lib64/libfreebl* appdir/usr/lib
|
||||
cp /etc/pki/tls/certs/ca-bundle.crt appdir/usr/ssl/cacert.pem
|
||||
|
||||
#modify the desktop file so that linuxdeployqt doesn't barf (version to 1.0, add semicolon to end of certain line types)
|
||||
sed -i 's/^Categor.*/&;/ ; s/^Keyword.*/&;/ ; s/1\.1/1\.0/' appdir/usr/share/applications/org.flightgear.FlightGear.desktop
|
||||
|
||||
#generate AppRun script
|
||||
|
||||
# Note: don't set LD_LIBRARY_PATH here.
|
||||
# if you do, you need to add code to unset it *sinde* FlightGear (eg, bootstrap.cxx),
|
||||
# so that fork-ed processes don't inherit the value. For an example see:
|
||||
# https://github.com/KDAB/hotspot/blob/master/src/main.cpp#L87
|
||||
|
||||
cat << 'EOF' > appdir/AppRun
|
||||
#!/bin/bash
|
||||
HERE="$(dirname "$(readlink -f "${0}")")"
|
||||
export SIMGEAR_TLS_CERT_PATH=$HERE/usr/ssl/cacert.pem
|
||||
export OSG_LIBRARY_PATH=${HERE}/usr/lib
|
||||
|
||||
if [[ $# -eq 0 ]]; then
|
||||
echo "Started with no arguments; assuming --launcher"
|
||||
exec "${HERE}/usr/bin/fgfs" --launcher
|
||||
else
|
||||
exec "${HERE}/usr/bin/fgfs" "$@"
|
||||
fi
|
||||
EOF
|
||||
|
||||
|
||||
chmod +x appdir/AppRun
|
||||
|
||||
#grab continuous linuxdeployqt
|
||||
wget -c https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage
|
||||
chmod +x linuxdeployqt-continuous-x86_64.AppImage
|
||||
|
||||
#set VERSION for AppImage creation
|
||||
export VERSION=`cat flightgear/flightgear-version`
|
||||
|
||||
./linuxdeployqt-continuous-x86_64.AppImage appdir/usr/share/applications/org.flightgear.FlightGear.desktop -appimage
|
||||
@@ -5,7 +5,9 @@ if [ "$WORKSPACE" == "" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VERSION=`cat flightgear/version`
|
||||
cmakeGenerator=Ninja
|
||||
cmakeCommonArgs="-DCMAKE_INSTALL_PREFIX:PATH=$WORKSPACE/dist -DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
||||
VERSION=`cat flightgear/flightgear-version`
|
||||
|
||||
#####################################################################################
|
||||
# ensure fgrcc can run when linked against libSimGearCore, for example
|
||||
@@ -22,43 +24,68 @@ rm -rf output/*
|
||||
#####################################################################################
|
||||
echo "Starting on SimGear"
|
||||
cd sgBuild
|
||||
cmake -DCMAKE_INSTALL_PREFIX:PATH=$WORKSPACE/dist -DENABLE_DNS:BOOL="ON" -DSIMGEAR_SHARED:BOOL="ON" ../simgear
|
||||
cmake -G $cmakeGenerator $cmakeCommonArgs ../simgear
|
||||
|
||||
# compile
|
||||
make
|
||||
ninja
|
||||
|
||||
if [ $? -ne '0' ]; then
|
||||
echo "make simgear failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
make install
|
||||
ninja install
|
||||
|
||||
# build source package and copy to output
|
||||
make package_source
|
||||
ninja package_source
|
||||
cp simgear-*.tar.bz2 ../output/.
|
||||
|
||||
#####################################################################################
|
||||
echo "Starting on FlightGear"
|
||||
cd ../fgBuild
|
||||
cmake -DCMAKE_INSTALL_PREFIX:PATH=$WORKSPACE/dist -DSIMGEAR_SHARED:BOOL="ON" -DENABLE_SWIFT:BOOL=ON -DFG_BUILD_TYPE=Release ../flightgear
|
||||
cmake -G $cmakeGenerator $cmakeCommonArgs -DENABLE_SWIFT:BOOL=ON -DFG_BUILD_TYPE=Release ../flightgear
|
||||
|
||||
# compile
|
||||
make
|
||||
ninja
|
||||
|
||||
if [ $? -ne '0' ]; then
|
||||
echo "make flightgear failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
make install
|
||||
ninja install
|
||||
|
||||
# build source package and copy to output
|
||||
make package_source
|
||||
ninja package_source
|
||||
cp flightgear-*.tar.bz2 ../output/.
|
||||
|
||||
#####################################################################################
|
||||
|
||||
if which sentry-cli >/dev/null; then
|
||||
echo "Uploading symbols"
|
||||
|
||||
export SENTRY_ORG=flightgear
|
||||
export SENTRY_PROJECT=flightgear
|
||||
|
||||
# set in the Jenkins environment for the builder
|
||||
# export SENTRY_AUTH_TOKEN=YOUR_AUTH_TOKEN
|
||||
|
||||
ERROR=$(sentry-cli upload-dif --include-sources "$WORKSPACE/dist/bin/fgfs" 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
|
||||
|
||||
# now we uploaded symnbols, strip the binaries
|
||||
|
||||
strip --strip-debug $WORKSPACE/dist/bin/fgfs
|
||||
strip --strip-debug $WORKSPACE/dist/bin/fgviewer
|
||||
strip --strip-debug $WORKSPACE/dist/bin/fgjs
|
||||
|
||||
#####################################################################################
|
||||
|
||||
echo "Assembling base package"
|
||||
cd $WORKSPACE
|
||||
|
||||
|
||||
@@ -118,10 +118,10 @@ 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%
|
||||
sentry-cli upload-dif --include-sources %WORKSPACE%\build-fg32\%FGFS_PDB%
|
||||
sentry-cli upload-dif --include-sources %WORKSPACE%\build-fg64\%FGFS_PDB%
|
||||
sentry-cli upload-dif --include-sources %WORKSPACE%\build-fg32-compositor\%FGFS_PDB%
|
||||
sentry-cli upload-dif --include-sources %WORKSPACE%\build-fg64-compositor\%FGFS_PDB%
|
||||
|
||||
REM indirect way to get command output into an environment variable
|
||||
set PATH=%OSG32%\bin;%PATH%
|
||||
@@ -129,7 +129,7 @@ osgversion --so-number > %TEMP%\osg-so-number.txt
|
||||
osgversion --version-number > %TEMP%\osg-version.txt
|
||||
osgversion --openthreads-soversion-number > %TEMP%\openthreads-so-number.txt
|
||||
|
||||
SET /P FLIGHTGEAR_VERSION=<flightgear\version
|
||||
SET /P FLIGHTGEAR_VERSION=<flightgear\flightgear-version
|
||||
SET /P OSG_VERSION=<%TEMP%\osg-version.txt
|
||||
SET /P OSG_SO_NUMBER=<%TEMP%\osg-so-number.txt
|
||||
SET /P OT_SO_NUMBER=<%TEMP%\openthreads-so-number.txt
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
<template>
|
||||
<version n="0">2019.*</version>
|
||||
<version n="1">2018.*</version>
|
||||
<version n="2">2020.1.*</version>
|
||||
<version n="3">2020.2.*</version>
|
||||
|
||||
<id>org.flightgear.fgaddon.trunk</id>
|
||||
<license>GPL</license>
|
||||
|
||||
@@ -88,6 +88,54 @@ function _logOutput(){
|
||||
esac
|
||||
}
|
||||
|
||||
function _yes_no_quit_prompt(){
|
||||
local prompt="$1"
|
||||
local default="$2"
|
||||
local choices res answer
|
||||
|
||||
case "$default" in
|
||||
[yY]) choices='Y/n/q' ;;
|
||||
[nN]) choices='y/N/q' ;;
|
||||
[qQ]) choices='y/n/Q' ;;
|
||||
"")
|
||||
if [[ "$INTERACTIVE_MODE" -eq 0 ]]; then
|
||||
_printLog "Non-interactive mode requested, but found a question with" \
|
||||
"no default answer;"
|
||||
_printLog "this can't work, aborting."
|
||||
exit 1
|
||||
fi
|
||||
choices='y/n/q'
|
||||
;;
|
||||
*)
|
||||
_printLog \
|
||||
"Invalid default choice for _yes_no_quit_prompt(): this is a bug in the"
|
||||
"script, aborting."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
while true; do
|
||||
if [[ "$INTERACTIVE_MODE" -eq 0 ]]; then
|
||||
answer="$default"
|
||||
else
|
||||
read -r -p "$prompt [$choices] " answer
|
||||
fi
|
||||
|
||||
if [[ -z "$answer" ]]; then
|
||||
answer="$default"
|
||||
fi
|
||||
|
||||
case "$answer" in
|
||||
[yY]) res=0; break ;;
|
||||
[nN]) res=1; break ;;
|
||||
[qQ]) res=2; break ;;
|
||||
*) ;;
|
||||
esac
|
||||
done
|
||||
|
||||
return $res
|
||||
}
|
||||
|
||||
function _aptUpdate(){
|
||||
local cmd=()
|
||||
|
||||
@@ -171,7 +219,6 @@ function _gitDownload(){
|
||||
return
|
||||
fi
|
||||
|
||||
|
||||
if [ -f "README" -o -f "README.txt" -o -f "README.rst" ]; then
|
||||
_printLog "$component: the repository already exists"
|
||||
else
|
||||
@@ -179,11 +226,73 @@ function _gitDownload(){
|
||||
"${REPO_USERNAME[$component]}" \
|
||||
"$component")
|
||||
clone_arg="${proto_spec}${REPO_ADDRESS[$component]}"
|
||||
_printLog "Fetching $component with 'git clone $clone_arg'"
|
||||
git clone "$clone_arg" .
|
||||
|
||||
# Test whether $clone_arg is 'https://git.code.sf.net/p/flightgear/fgdata'
|
||||
if _check_clone_url_and_maybe_ask "$clone_arg"; then
|
||||
_clone_fgdata # Work around a problem at SourceForge
|
||||
else
|
||||
_printLog "Fetching $component with 'git clone $clone_arg'"
|
||||
git clone "$clone_arg" .
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Return 0 if _clone_fgdata() should be used, otherwise 1.
|
||||
function _check_clone_url_and_maybe_ask(){
|
||||
local -i retcode=1
|
||||
|
||||
if [[ "$1" = "https://git.code.sf.net/p/flightgear/fgdata" ]]; then
|
||||
local prompt_res=-1
|
||||
set +e
|
||||
if [[ "$INTERACTIVE_MODE" -eq 1 ]]; then
|
||||
printf "From experience, cloning FGData from SourceForge using https does \
|
||||
not work\n(probably a problem at SourceForge), but updates do work. Thus, we \
|
||||
propose to\nclone FGData from GitLab and change the repository setup so that \
|
||||
subsequent\nupdates are fetched from SourceForge. This should be quite safe, \
|
||||
because\n<https://gitlab.com/flightgear/fgdata> is an official mirror of \
|
||||
FGData (it is\nmaintained by FlightGear developers). Answer 'y' to proceed \
|
||||
this way. If you\nanswer 'n', we'll *try* to clone FGData from SourceForge \
|
||||
using https. Answer 'q'\nif you want to quit. "
|
||||
fi
|
||||
_yes_no_quit_prompt "What is your choice?" y; prompt_res=$?
|
||||
set -e
|
||||
case $prompt_res in
|
||||
0) retcode=0 ;;
|
||||
1) retcode=1 ;;
|
||||
2) exit 0 ;;
|
||||
*) _printLog "Unexpected return code from _yes_no_quit_prompt() in" \
|
||||
"_check_clone_url_and_maybe_ask(); aborting."
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
if [[ $retcode -eq 1 ]]; then
|
||||
_printLog "Okay, will try to clone FGData from SourceForge using" \
|
||||
"https, but be aware that"
|
||||
_printLog "this is likely to fail."
|
||||
fi
|
||||
fi
|
||||
|
||||
return $retcode
|
||||
}
|
||||
|
||||
# Special function for cloning FGData with https. This is needed because there
|
||||
# seems to be a problem at SourceForge that doesn't allow the clone operation
|
||||
# to succeed for FGData using https---presumably because of its large size.
|
||||
function _clone_fgdata(){
|
||||
local url="https://${REPO_ADDRESS[DATA_ALT]}"
|
||||
_printLog "Starting special initialization routine for the DATA component..."
|
||||
_printLog "Fetching FGData with 'git clone $url'"
|
||||
git clone "$url" .
|
||||
_printLog "Creating the 'next' local branch"
|
||||
git checkout -b next origin/next
|
||||
url="https://${REPO_ADDRESS[DATA]}"
|
||||
_printLog "Setting FGData's 'origin' remote to $url"
|
||||
git remote set-url origin "$url"
|
||||
_printLog "Updating FGData from $url"
|
||||
git pull --ff-only
|
||||
_printLog "Special initialization routine for the DATA component: done."
|
||||
}
|
||||
|
||||
function _make(){
|
||||
if [ "$COMPILE" = "y" ]; then
|
||||
pkg="$1"
|
||||
@@ -364,7 +473,17 @@ function _usage() {
|
||||
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."
|
||||
echo " --compositor build FlightGear with compositor enabled"
|
||||
echo " --non-interactive"
|
||||
echo " don't ask any question; always assume the default answer in"
|
||||
echo " situations where a question would normally be asked."
|
||||
echo
|
||||
echo "More detailed information can be found on the FlightGear wiki:"
|
||||
echo ""
|
||||
echo " http://wiki.flightgear.org/Scripted_Compilation_on_Linux_Debian/Ubuntu"
|
||||
echo ""
|
||||
echo "The wiki may sometimes be a bit outdated; if in doubt, consider this help text"
|
||||
echo "as the reference."
|
||||
}
|
||||
|
||||
#######################################################
|
||||
@@ -373,6 +492,7 @@ set -e
|
||||
|
||||
CBD="$PWD"
|
||||
LOGFILE="$CBD/compilation_log.txt"
|
||||
INTERACTIVE_MODE=1
|
||||
|
||||
# Available values for WHATTOBUILD and WHATTOBUILDALL:
|
||||
declare -a WHATTOBUILD_AVAIL=(
|
||||
@@ -450,6 +570,9 @@ REPO_ADDRESS[SIMGEAR]="git.code.sf.net/p/flightgear/simgear"
|
||||
REPO_SITE[SIMGEAR]="SourceForge"
|
||||
REPO_ADDRESS[DATA]="git.code.sf.net/p/flightgear/fgdata"
|
||||
REPO_SITE[DATA]="SourceForge"
|
||||
# This is an official mirror of FGData
|
||||
REPO_ADDRESS[DATA_ALT]="gitlab.com/flightgear/fgdata.git"
|
||||
REPO_SITE[DATA_ALT]="GitLab"
|
||||
REPO_ADDRESS[FGFS]="git.code.sf.net/p/flightgear/flightgear"
|
||||
REPO_SITE[FGFS]="SourceForge"
|
||||
REPO_ADDRESS[FGRUN]="git.code.sf.net/p/flightgear/fgrun"
|
||||
@@ -471,7 +594,8 @@ if [[ `uname` == 'OpenBSD' ]]; then
|
||||
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:,ignore-intercomponent-deps,compositor,version \
|
||||
--longoptions package-manager:,sudo:,ignore-intercomponent-deps,compositor \
|
||||
--longoptions non-interactive,version \
|
||||
-n "$PROGNAME" -- "$@")
|
||||
|
||||
case $? in
|
||||
@@ -549,6 +673,7 @@ while true; do
|
||||
-i) OPENRTI="OPENRTI"; shift ;;
|
||||
-b) BUILD_TYPE="$2"; shift 2 ;;
|
||||
--compositor) COMPOSITOR="-DENABLE_COMPOSITOR=ON"; shift ;;
|
||||
--non-interactive) INTERACTIVE_MODE=0; shift ;;
|
||||
-h|--help) _usage; exit 0 ;;
|
||||
--version) _printVersion; exit 0 ;;
|
||||
--) shift; break ;;
|
||||
@@ -691,7 +816,7 @@ if [[ "$DOWNLOAD_PACKAGES" = "y" ]]; then
|
||||
# CMake
|
||||
if _elementIn "CMAKE" "${WHATTOBUILD[@]}"; then
|
||||
PKG+=(libarchive-dev libbz2-dev libexpat1-dev libjsoncpp-dev liblzma-dev
|
||||
libncurses5-dev procps zlib1g-dev)
|
||||
libncurses5-dev libssl-dev procps zlib1g-dev)
|
||||
else
|
||||
PKG+=(cmake)
|
||||
fi
|
||||
@@ -1071,11 +1196,11 @@ if _elementIn "FGFS" "${WHATTOBUILD[@]}" || \
|
||||
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"
|
||||
|
||||
2
fgdata
2
fgdata
Submodule fgdata updated: f5b4cb1d0b...9d599765ed
Submodule flightgear updated: 34a29b9106...14be037099
2
getstart
2
getstart
Submodule getstart updated: b7ab2fa1e9...85fbc39a40
@@ -62,8 +62,13 @@ fi
|
||||
|
||||
popd
|
||||
|
||||
chmod +x $WORKSPACE/dist/bin/osgversion
|
||||
|
||||
crashpad_bin_path=$WORKSPACE/dist/fgfs.app/Contents/MacOS/crashpad_handler
|
||||
if [ -f $crashpad_bin_path ]; then
|
||||
chmod +x $crashpad_bin_path
|
||||
fi
|
||||
|
||||
chmod +x $WORKSPACE/dist/bin/osgversion
|
||||
echo "Running symbol upload script"
|
||||
./sentry-dSYM-upload-mac.sh
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ t = Time.new
|
||||
fgCurrentYear = t.year
|
||||
fgBundleIdentifier = "org.flightgear.mac"
|
||||
|
||||
fgVersion = File.read("#{srcDir}/version").strip
|
||||
fgVersion = File.read("#{srcDir}/flightgear-version").strip
|
||||
volName="\"FlightGear #{fgVersion}\""
|
||||
|
||||
if $isRelease
|
||||
@@ -167,8 +167,9 @@ if !$isRelease
|
||||
--file #{dmgPath}`
|
||||
|
||||
|
||||
else
|
||||
puts "Creating full image with data"
|
||||
end
|
||||
|
||||
puts "Creating full image with data"
|
||||
|
||||
`rsync -a fgdata/ #{resourcesDir}/data`
|
||||
|
||||
@@ -186,8 +187,6 @@ puts "Notarizing DMG #{dmgFullPath}"
|
||||
--username "zakalawe@mac.com" \
|
||||
--password "@keychain:FlightGearAppStoreConnectUserName" \
|
||||
--file #{dmgFullPath}`
|
||||
end
|
||||
|
||||
|
||||
|
||||
puts "Packaging complete"
|
||||
|
||||
@@ -36,6 +36,10 @@ localization files in $FG_ROOT/Translations/<language_code>):
|
||||
fg-update-translation-files --transl-dir="$FG_ROOT/Translations" \
|
||||
merge-new-master $languages
|
||||
|
||||
Note: you may omit $languages in the fg-update-translation-files command if
|
||||
you want to autodetect the FlightGear-nonQt.xlf files present in
|
||||
$FG_ROOT/Translations.
|
||||
|
||||
Updating XLIFF files to reflect changes in the default translation
|
||||
------------------------------------------------------------------
|
||||
|
||||
@@ -45,6 +49,9 @@ modified or removed, or categories added or removed[3]):
|
||||
fg-update-translation-files --transl-dir="$FG_ROOT/Translations" \
|
||||
merge-new-master $languages
|
||||
|
||||
Note: you may omit $languages in this command if you want to autodetect the
|
||||
FlightGear-nonQt.xlf files present in $FG_ROOT/Translations.
|
||||
|
||||
Updating XLIFF files to mark or remove obsolete translated strings
|
||||
------------------------------------------------------------------
|
||||
|
||||
@@ -53,9 +60,14 @@ To remove unused translated strings (not to be done too often in my opinion):
|
||||
fg-update-translation-files --transl-dir="$FG_ROOT/Translations" \
|
||||
remove-unused $languages
|
||||
|
||||
(you may replace 'remove-unused' with 'mark-unused' to just mark the strings
|
||||
as not-to-be-translated, however 'merge-new-master' presented above already
|
||||
does that)
|
||||
Notes:
|
||||
|
||||
- You may omit $languages in this command if you want to autodetect the
|
||||
FlightGear-nonQt.xlf files present in $FG_ROOT/Translations.
|
||||
|
||||
- It is possible to replace 'remove-unused' with 'mark-unused' to just mark
|
||||
the strings as not-to-be-translated; however, 'merge-new-master' presented
|
||||
above already does that.
|
||||
|
||||
Merging contents from an XLIFF file into another one
|
||||
----------------------------------------------------
|
||||
|
||||
@@ -27,6 +27,7 @@ import sys
|
||||
|
||||
import flightgear.meta.logging
|
||||
import flightgear.meta.i18n as fg_i18n
|
||||
from flightgear.meta.i18n import XliffFormatHandler
|
||||
|
||||
|
||||
PROGNAME = os.path.basename(sys.argv[0])
|
||||
@@ -45,7 +46,7 @@ def processCommandLine():
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
usage="""\
|
||||
%(prog)s [OPTION ...] ACTION LANGUAGE_CODE...
|
||||
%(prog)s [OPTION ...] ACTION [LANGUAGE_CODE]...
|
||||
Update FlightGear XLIFF localization files.""",
|
||||
description="""\
|
||||
This program performs the following operations (actions) on FlightGear XLIFF
|
||||
@@ -68,6 +69,13 @@ translation files (*.xlf):
|
||||
In the XLIFF localization files corresponding to the specified
|
||||
language(s), remove all translated strings that are marked as unused.
|
||||
|
||||
If no LANGUAGE_CODE is provided as an argument, then assuming $transl_dir
|
||||
represents the value passed to --transl-dir, all directories $d such that a
|
||||
file named FlightGear-nonQt.xlf is found in $transl_dir/$d will be acted on as
|
||||
if they had been passed as LANGUAGE_CODE arguments (actually, the directory
|
||||
$transl_dir/default is not considered as a candidate; it is simply skipped).
|
||||
Typically, $transl_dir is /path/to/FGData/Translations.
|
||||
|
||||
A translated string that is marked as unused is still present in the XLIFF
|
||||
localization file; it is just presented in a way that tells translators they
|
||||
don't need to worry about it. On the other hand, when a translated string is
|
||||
@@ -105,7 +113,7 @@ general on the short or mid-term: they only take some space.
|
||||
remove those already marked as unused from the XLIFF
|
||||
files corresponding to each given LANGUAGE_CODE (i.e.,
|
||||
those that are not in the default translation)""")
|
||||
parser.add_argument("lang_code", metavar="LANGUAGE_CODE", nargs="+",
|
||||
parser.add_argument("lang_code", metavar="LANGUAGE_CODE", nargs="*",
|
||||
help="""\
|
||||
codes of languages to operate on (e.g., fr, en_GB, it,
|
||||
es_ES...)""")
|
||||
@@ -125,11 +133,19 @@ class MarkOrRemoveUnusedAction(enum.Enum):
|
||||
mark, remove = range(2)
|
||||
|
||||
|
||||
def langCodesToActOn():
|
||||
"""Return an iterable of all language codes we were told to work on."""
|
||||
if params.lang_code:
|
||||
return params.lang_code
|
||||
else:
|
||||
return XliffFormatHandler.availableTranslations(params.transl_dir)
|
||||
|
||||
|
||||
def markOrRemoveUnused(l10nResPoolMgr, action):
|
||||
formatHandler = fg_i18n.XliffFormatHandler()
|
||||
masterTransl = l10nResPoolMgr.readFgMasterTranslation().transl
|
||||
|
||||
for langCode in params.lang_code:
|
||||
for langCode in langCodesToActOn():
|
||||
xliffPath = formatHandler.defaultFilePath(params.transl_dir, langCode)
|
||||
transl = formatHandler.readTranslation(xliffPath)
|
||||
|
||||
@@ -148,7 +164,7 @@ def mergeNewMaster(l10nResPoolMgr):
|
||||
formatHandler = fg_i18n.XliffFormatHandler()
|
||||
masterTransl = l10nResPoolMgr.readFgMasterTranslation().transl
|
||||
|
||||
for langCode in params.lang_code:
|
||||
for langCode in langCodesToActOn():
|
||||
xliffPath = formatHandler.defaultFilePath(params.transl_dir, langCode)
|
||||
transl = formatHandler.readTranslation(xliffPath)
|
||||
transl.mergeMasterTranslation(masterTransl, logger=logger)
|
||||
|
||||
@@ -1001,6 +1001,33 @@ class AbstractFormatHandler(metaclass=abc.ABCMeta):
|
||||
baseName = cls.defaultFileBaseName(targetLanguage)
|
||||
return os.path.join(translationsDir, targetLanguage, baseName)
|
||||
|
||||
@classmethod
|
||||
def availableTranslations(cls, translationsDir):
|
||||
"""Return a list of all available translations in translationsDir.
|
||||
|
||||
This method expects a particular layout for translation files:
|
||||
the one used in $FG_ROOT/Translations. More precisely, it looks
|
||||
for all files named LANG_CODE/NAME in translationsDir, where
|
||||
NAME is cls.defaultFileBaseName(LANG_CODE). The special
|
||||
directory translationsDir/DEFAULT_LANG_DIR is not explored;
|
||||
thus, the result cannot contain DEFAULT_LANG_DIR.
|
||||
|
||||
Return a list of language codes, sorted with list.sort().
|
||||
|
||||
"""
|
||||
res = []
|
||||
with os.scandir(translationsDir) as it:
|
||||
for entry in it:
|
||||
if (entry.name != DEFAULT_LANG_DIR and entry.is_dir() and
|
||||
os.path.isfile(
|
||||
os.path.join(
|
||||
translationsDir, entry.name,
|
||||
cls.defaultFileBaseName(entry.name)))):
|
||||
res.append(entry.name)
|
||||
|
||||
res.sort()
|
||||
return res
|
||||
|
||||
@abc.abstractmethod
|
||||
def writeTranslation(self, transl, filePath):
|
||||
"""Write a Translation instance to a file."""
|
||||
|
||||
@@ -42,8 +42,8 @@ NEXT_MINOR_VERSION=${VERSION_A[1]}
|
||||
setVersionTo() {
|
||||
local V="$1"
|
||||
echo "setting version to $V"
|
||||
echo "$V" > version
|
||||
git add version
|
||||
echo "$V" > flightgear-version
|
||||
git add flightgear-version
|
||||
echo "new version: $V" | git commit --file=-
|
||||
# git tag "version/$V"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
THIS_RELEASE="2019.1"
|
||||
NEXT_RELEASE="2019.2"
|
||||
THIS_RELEASE="2020.2"
|
||||
NEXT_RELEASE="2020.3"
|
||||
SUBMODULES="simgear flightgear fgdata getstart"
|
||||
|
||||
#:<< 'COMMENT_END'
|
||||
@@ -39,6 +39,6 @@ done
|
||||
# IdentitiesOnly yes
|
||||
# User user_sf_username
|
||||
|
||||
svn copy svn+ssh://svn.code.sf.net/p/flightgear/fgaddon/trunk \
|
||||
svn+ssh://svn.code.sf.net/p/flightgear/fgaddon/branches/release-${THIS_RELEASE} \
|
||||
-m "branching for release ${THIS_RELEASE}"
|
||||
#svn copy svn+ssh://svn.code.sf.net/p/flightgear/fgaddon/trunk \
|
||||
# svn+ssh://svn.code.sf.net/p/flightgear/fgaddon/branches/release-${THIS_RELEASE} \
|
||||
# -m "branching for release ${THIS_RELEASE}"
|
||||
|
||||
@@ -1,26 +1,29 @@
|
||||
#!/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
|
||||
# the name to create
|
||||
SCENERY_PACK=SceneryPack.BIKF
|
||||
|
||||
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
|
||||
# the tiles to select
|
||||
TILES="w030n60/w???n??";
|
||||
|
||||
# tiles for PHNL for C172 tutorials
|
||||
TUTORIAL_TILES="w160n[12]0/w???n??";
|
||||
|
||||
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
|
||||
|
||||
# note the path to the TerraSync root here
|
||||
ln -s /var/www/uk-mirror/fgscenery ${SCENERY_PACK}
|
||||
|
||||
tar --format=gnu --create --owner=root --group=root --gzip --file=${SCENERY_PACK}.tgz \
|
||||
${SCENERY_PACK}/Objects/${TILES} \
|
||||
${SCENERY_PACK}/Terrain/${TILES} \
|
||||
${SCENERY_PACK}/Objects/${TUTORIAL_TILES} \
|
||||
${SCENERY_PACK}/Terrain/${TUTORIAL_TILES} \
|
||||
${SCENERY_PACK}/Airports/B/I/K \
|
||||
${SCENERY_PACK}/Airports/P/H \
|
||||
${SCENERY_PACK}/Models
|
||||
|
||||
rm ${SCENERY_PACK}
|
||||
|
||||
# upload to frs.sourceforge.net /home/frs/project/fquitfl/flightgear/scenery/
|
||||
|
||||
|
||||
34
release_builder/reset-git-author.sh
Executable file
34
release_builder/reset-git-author.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
#This file is part of FlightGear
|
||||
#
|
||||
#FlightGear is free software: you can redistribute it and/or modify
|
||||
#it under the terms of the GNU General Public License as published by
|
||||
#the Free Software Foundation, either version 2 of the License, or
|
||||
#(at your option) any later version.
|
||||
#
|
||||
#FlightGear is distributed in the hope that it will be useful,
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
#GNU General Public License for more details.
|
||||
#
|
||||
#You should have received a copy of the GNU General Public License
|
||||
#along with FlightGear If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
if [ -z "$1" -o -z "$2" ]; then
|
||||
echo "usage: author email"
|
||||
exit
|
||||
fi
|
||||
|
||||
resetAuthor() {
|
||||
pushd $3 > /dev/null
|
||||
git config user.name "$1"
|
||||
git config user.email $2
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
resetAuthor "$1" $2 flightgear
|
||||
resetAuthor "$1" $2 simgear
|
||||
resetAuthor "$1" $2 fgdata
|
||||
resetAuthor "$1" $2 getstart
|
||||
resetAuthor "$1" $2 .
|
||||
|
||||
@@ -33,9 +33,9 @@ MICRO_VERSION=${VERSION_A[2]}
|
||||
|
||||
setVersionTo() {
|
||||
local V="$1"
|
||||
echo "setting version to $V"
|
||||
echo "$V" > version
|
||||
git add version
|
||||
echo "setting version to $V in $2"
|
||||
echo "$V" > $2
|
||||
git add $2
|
||||
echo "new version: $V" | git commit --file=-
|
||||
git tag "version/$V"
|
||||
}
|
||||
@@ -43,9 +43,22 @@ setVersionTo() {
|
||||
while [ $# -gt 0 ]; do
|
||||
echo "Processing $1"
|
||||
pushd $1 > /dev/null
|
||||
|
||||
case $1 in
|
||||
flightgear)
|
||||
versionFileName="flightgear-version"
|
||||
;;
|
||||
simgear)
|
||||
versionFileName="simgear-version"
|
||||
;;
|
||||
*)
|
||||
versionFileName="version"
|
||||
;;
|
||||
esac
|
||||
|
||||
git config user.name "Automatic Release Builder"
|
||||
git config user.email "build@flightgear.org"
|
||||
setVersionTo "${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}"
|
||||
setVersionTo "${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}" $versionFileName
|
||||
popd > /dev/null
|
||||
shift
|
||||
done
|
||||
|
||||
2
simgear
2
simgear
Submodule simgear updated: 17f86567f1...6e0c39bb68
Submodule windows-3rd-party updated: 790648cd69...490305f746
Reference in New Issue
Block a user