This prevents issues where Windows-style path pollutes path strings
with $KEYMAN_ROOT variable. It typically will only be readonly if we are
setting the variable in our own scripts
Note: there is a bit of potential confusion about the difference between
/resources/builder.inc.sh (the full implementation for builder scripts),
and /resources/build/builder.inc.sh (the source script that builder
scripts should always use).
This allows us to make assumptions that will always be true for builder
scripts that may not be true for other scripts, such as setting base
folder.
Fixes two things:
* $VERSION_GIT_TAG was being misinterpreted by mkver as
$VERSION + "_GIT_TAG". This has been addressed by making the $VERSION
match the last one in the replaceVersionStrings_Mkver function, and
also have moved to using the newer $VersionGitTag and $Environment
vartiables instead.
* The 'dist' property was being set in sentry-cli sourcemap uploads,
though we never set the dist prop when we initialize sentry.
Previously we didn't detect that we were building a .deb package on
Launchpad or a Debian server, so we set VERSION_TAG to end in `-local`.
This change now checks the `KEYMAN_PKG_BUILD` environment variable which
will be set during .deb package builds (set in `debian/rules`). The
downside of this solution is that now `-local` also gets omitted if
we build a .deb package on a local dev machine, but that probably doesn't
happen too often, and even less often with modified source code. The
majority of builds where we want `-local` are local builds that get
installed locally, and those cases are covered by this change. And what
is more important is that for release builds we no longer append `-local`.
`environment.sh` is used only on Mac. This change modifies `build.sh`
to generate this file only when building on Mac. It also excludes
`environment.sh` from the Linux source tarball.
Previously GHA builds always used the "local" environment. This
change now detects test builds as well as release builds and properly
sets the environment.
Enforces -e (abort script on error) and -u (error on unset variable use)
on all scripts that source build-utils.sh. This may result in some
downstream build failures which we'll need to address before merge to
master.
This sets us up to run all common/ and resources/ tests from a single
script, common/build.sh. This test will be run on each platform for all
changes made in common/ or resources/.
Also renamed files and paths for consistency in resources/ and updated
tests accordingly.
Improves build script performance by:
* using built-ins wherever possible (e.g. string splitting)
* eliminating redundant code
* using absolute (to $KEYMAN_ROOT) rather than relative paths to avoid realpath
* removing unnecessary `npm run` calls
BEFORE | AFTER
-------------------------------|----------------------
time ./core/build.sh --help |
real 0m2.116s | real 0m0.874s
user 0m0.578s | user 0m0.198s
sys 0m0.984s | sys 0m0.289s
-------------------------------|----------------------
time ./web/build.sh --help |
real 0m3.523s | real 0m0.757s
user 0m1.166s | user 0m0.320s
sys 0m2.273s | sys 0m0.455s
-------------------------------|----------------------
time ./web/build.sh -d |
real 1m34.750s | real 0m59.974s
user 0m9.721s | user 0m6.284s
sys 0m19.652s | sys 0m13.202s
@keymanapp-test-bot skip
* `builder_has_action` renamed to `builder_start_action`
* `builder_report` renamed to `builder_finish_action`
* `builder_has_action` created to be a silent test for the action
* Added reasonably comprehensive documentation.