Because we don't know if mac BSD cp or GNU cp will be first on the path,
where there is ambiguity (e.g. with -R flag), we will use the macOS cp
command in /bin to ensure that we have consistent results. The
alternative would be to fixup each instance of the cp parameters so that
they work consistently with either cp command, but given these scripts
can run only on macOS, that seems unnecessary.
This replaces the earlier change in 97c6331b5.
Fixes#8533 after build agent maintenance put GNU coreutils cp on path
ahead of macOS /bin/cp. This subtly changed the behaviour of the `-R`
flag such that it copied the folder into a subfolder rather than copying
the contents of the folder into the destination folder:
Original layout:
```
Install Keyman.app/Contents/MacOS/
applet
textinputsource
Keyman.app/
```
Corrupted layout:
```
Install Keyman.app/Install Keyman.app/Contents/MacOS/
applet
textinputsource
Keyman.app/
```
Query: should we be rolling back the path changes so that /bin is first
on the path? I am concerned about other subtle changes in behaviour in
the macOS and iOS builds. Otherwise it feels like we may need to audit
the scripts in /mac, /ios (and possibly /common, /core, /web,
/resources) for potential changes.
Annoyed that it took me so long. Also annoying that macOS fails so
subtly when a parent folder has the .app extension in its name.
Some of the configuration files are useful for other distributions
as well. So this change moves them out of `debian/` to
`linux/keyman-config` so that they will be included in the source
tar ball.
Also remove zero-width space from one file.
Closes#8880.
(cherry picked from commit 749112660d)
If the user tries to install a corrupt .kmp file we now display
an error message instead of just logging to the console and Sentry.
Fixes#8478.
(cherry picked from commit e1597914dd)
Fixes#8443.
Will cherry-pick to stable-16.0.
The regex for matching error messages has an optional section for
the file/line detail (line 54):
```regex
^(?:(.+) \((\d+)\): )?<snip>
```
The code that parses the results did not account for this being
optional, which would cause a crash if the error message did not include
this information.
The ibus-keyman post-installation script failed, causing the entire
installation to fail. This change removes `set -e` so that we try
to run the rest of the commands even when one command should fail.
Also accounts for ibus-daemon being started with the full path,
and start ibus-daemon with fill path as well.
(cherry picked from commit 9c1500fe57)