The main advantage of getopt is that it allows one to define long
options. Help can now be obtained with 'download_and_compile.sh --help',
in addition to the already-existing '-h' option.
[ This is the getopt tool shipped in Debian's util-linux package,
which is marked as Essential, therefore should always be present
on a Debian system. ]
Try to improve formatting of the --help message, so that it is better
suited to document options that have a short as well as a long form.
Make the presentation of this help message a bit more standard.
Since James' recent FG work, the Qt private headers are not needed
anymore for the Qt launcher; clarify this in the comments (they are
still needed for FGQCANVAS, but it is disabled by default).
The qml-module-qtquick-dialogs package is needed for the built-in
launcher's Settings dialog since FlightGear commit
37dc418ce1978a55281cdedf6983e0e3ffea0108.
Forum user daweed reported[1] a nasty error[2] when doing 'git clone' or
'git pull' for FGData with the HTTPS protocol. This error disappeared as
soon as he replaced libcurl4-gnutls-dev with libcurl4-openssl-dev on his
system.
-> favor installation of libcurl4-openssl-dev over libcurl4-gnutls-dev
[1] https://forum.flightgear.org/viewtopic.php?f=20&p=329326#p329324
[2] "RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection
was non-properly terminated"
Typical output of:
dpkg-query --showformat='${Status}\n' --show dctrl-tools
is:
install ok installed
(three words, not one). Thanks to wkitty42 for the report.
Declare qtdeclarative5-private-dev and qml-module-qtquick2 as optional
dependencies, because they are needed for the built-in launcher,
starting from FG commit 3a8d3506d651b770e3173841a034e6203528f465
(committed to FG on 2017-09-26). People who can't install these packages
(oldish systems, etc.) should still be able to build and run FlightGear,
but without the built-in launcher.
See discussion around this message:
https://sourceforge.net/p/flightgear/mailman/message/36059892/
- Rename _package_alternative_inner() to _find_package_alternative() and
modify it to make it more useful when called from other functions. If
a package is found that matches one of the alternatives, its name is
printed on stdout, otherwise nothing is printed (empty output).
- Adapt _package_alternative() accordingly and rename it
to _mandatory_pkg_alternative().
- New function _optional_pkg_alternative() based on
_find_package_alternative(). Contrary to _mandatory_pkg_alternative(),
if no match is found in _optional_pkg_alternative(), a message is
printed to stdout but the script doesn't abort.
By setting the 'ident' attribute for /download_and_compile.sh, this
replacement will be automatic whenever the file is checked out.
Note: the ID is the 40-character hexadecimal blob object name in Git, it
is *not* the commit ID. 'git show <id>' can be used to obtain the
script contents from its blob object name (id).
This will avoid spoiling every diff with the version number change, or
alternatively having different versions of the same file displaying and
logging the same version number.
If download_and_compile.sh is moved to a different directory in FGMeta
(or even renamed), then the path in .gitattributes must be adapted for
the substitution to work (the '/' in .gitattributes anchors the match at
the containing directory; I did this because download_and_compile.sh is
a rather generic name, and there *might* be different scripts with the
same name in other dirs...).
- Add function _package_alternative() to select between alternative
packages (idea of Pat Callahan).
- Split the 'apt-get update' and 'apt-get install' steps to arrange for
installation of the 'dctrl-tools' prerequisite of
_package_alternative().
- Add and use functions _aptUpdate() and _aptInstall() for good
factoring (makes testing easier for people not using sudo, allows one
to easily switch from 'apt-get' to 'apt' or 'aptitude' if wanted,
etc.).