Commit graph

2077 commits

Author SHA1 Message Date
Eberhard Beilharz
6de40e903b
test(common): better group baseline tests
This change groups similar tests together. Also update `build.sh` to
compile .js files.

Follow-up-of: #15341
Test-bot: skip
2025-12-15 18:12:01 +01:00
Marc Durdin
00e88d37a4 chore: Merge remote-tracking branch 'origin/epic/web-core' into auto/A19S17-merge-master-into-web-core 2025-12-05 08:07:35 +01:00
Marc Durdin
f813442c40
Merge pull request #15276 from keymanapp/revert-14799-change/windows/include-map2pdb-for-relevant-projects
change(windows): Revert "change(windows): include map2pdb generation for relevant Delphi projects"
2025-12-05 07:10:52 +01:00
Marc Durdin
76baf1a6d6
Merge pull request #15258 from keymanapp/maint/common/15130-use-builder_launch-for-child-builds
maint(common): use `builder_launch` for child builds
2025-12-05 07:10:44 +01:00
Marc Durdin
c3a8fdec13
Merge pull request #15257 from keymanapp/maint/resources/verify-order-of-builder_int_deps
maint(resources): verify order of builder_describe_internal_dependency
2025-12-05 07:10:37 +01:00
Marc Durdin
6c99f33bcc
Revert "change(windows): include map2pdb generation for relevant Delphi projects" 2025-12-03 14:13:54 +01:00
Marc Durdin
0d8999574a
Merge pull request #15184 from keymanapp/dependabot/npm_and_yarn/resources/build/pr-build-status/glob-10.5.0
chore(deps-dev): bump glob from 10.4.5 to 10.5.0 in /resources/build/pr-build-status
2025-12-03 13:45:25 +01:00
Marc Durdin
024432377a
Merge pull request #15173 from keymanapp/dependabot/npm_and_yarn/resources/build/pr-build-status/js-yaml-4.1.1
chore(deps-dev): bump js-yaml from 4.1.0 to 4.1.1 in /resources/build/pr-build-status
2025-12-03 13:42:16 +01:00
Marc Durdin
c524db41b9 maint(common): use builder_launch for child builds
Fixes: #15130
Test-bot: skip
2025-12-02 06:17:31 +01:00
Marc Durdin
9335a82530 maint(core): verify that keyman_core_ldml.h is in sync
Fixes: #15254
Test-bot: skip
Build-bot: skip build:linux,mac,windows
2025-12-01 17:11:57 +01:00
Marc Durdin
94ac669ec1 maint(resources): verify order of builder_describe_internal_dependency
Test-bot: skip
2025-12-01 16:47:50 +01:00
Marc Durdin
ca77e41d74 change(windows): add unit testing to keyman32 build
Rename keyman-engine-tests.vcxproj to keyman32.tests.vcxproj, move up a
folder, rename other files to match test filename conventions, update
vcxproj for vs2022, and build and run this from build.sh:test.

Also remove keyman-engine.vcxproj, instead integrating the static lib
version of keyman32 into keyman32.vcxproj. One day in the future, we
could split back the other way, and have the DLL be essentially a link
action from the .lib, but that's higher complexity to setup.

Add a configuration step to install NuGet packages for Google Test
specifically for keyman32.tests.vcxproj. If we add Google Test to other
msbuild projects, we could move the packages/ up to top level of the
repo in the future (similar to node_modules) to reduce number of
configuration downloads.

Build-bot: skip build:windows,developer
Test-bot: skip
2025-11-27 09:11:39 +01:00
Marc Durdin
c2204e4dfc chore: Merge remote-tracking branch 'origin/epic/web-core' into auto/A19S16-merge-master-into-web-core
Test-bot: skip
Build-bot: skip build:web
2025-11-20 15:06:01 +01:00
rc-swag
85dcdcf066 feat(windows): update wix to 3.14.1
Update the WiX toolset build version to 3.14.1 for Arm64.

Fixes: #15192
2025-11-20 15:35:46 +10:00
dependabot[bot]
4a76721f45
chore(deps-dev): bump glob in /resources/build/pr-build-status
Bumps [glob](https://github.com/isaacs/node-glob) from 10.4.5 to 10.5.0.
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v10.4.5...v10.5.0)

---
updated-dependencies:
- dependency-name: glob
  dependency-version: 10.5.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 22:23:08 +00:00
Marc Durdin
6e470efa3e
Merge pull request #14799 from keymanapp/change/windows/include-map2pdb-for-relevant-projects
change(windows): include map2pdb generation for relevant Delphi projects
2025-11-17 17:02:25 +01:00
dependabot[bot]
583f5eef11
chore(deps-dev): bump js-yaml in /resources/build/pr-build-status
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 17:46:41 +00:00
Marc Durdin
57c0fa3d03
Merge pull request #15129 from keymanapp/maint/resources/builder_launch
maint(resources): add `builder_launch` function
2025-11-14 14:24:19 +01:00
Marc Durdin
8f95d84014
Merge pull request #15114 from keymanapp/maint/resources/builder-timing
maint(resources): add build timing report to builder
2025-11-14 14:24:11 +01:00
Marc Durdin
7d6e04f9ac
Apply suggestions from code review
Build-bot: skip
2025-11-14 13:58:16 +01:00
Marc Durdin
0988a86fa4 maint(resources): improve builder_launch to allow for arbitrary parameters
Also cleans up reporting of child scripts and links the list of reserved
parameters across a few locations. Address review comments.
2025-11-14 10:44:35 +01:00
Marc Durdin
edca16f508 change(windows): include map2pdb generation for relevant Delphi projects
Adds a call to map2pdb for Delphi projects, if map2pdb is an executable
on the path. This way, we get .pdb files we can use for debugging and
for performance profiling. This also replaces tds2dbg.

If map2dbg is available, then the build and install actions will copy
the PDB to be alongside the corresponding executable, making most debug
actions relatively seamless for finding symbols.

Also fixes up setup.exe in Windows and Developer to extend setup.exe to
a 512-byte boundary after map2pdb patches the PE.

Relates-to: #14787
Build-bot: skip release:developer,windows
Test-bot: skip
2025-11-13 14:48:18 +01:00
Eberhard Beilharz
081e72b7ca
maint(core): fix option defaults for Meson >= 1.1 🍒
Meson 1.1 changed the name of the options file from `meson_options.txt`
to `meson.options`. Currently we're stuck with Meson 1.0 as minimum
Meson version because we still support Ubuntu 22.04 Jammy, but on some
machines a newer version of meson gets installed which causes the
options to be ignored.

The first attempt to simply symlink or copy `meson_options.txt` to
`meson.options` failed because git on Windows doesn't support symlinks
by default, and Meson complains if it finds two options files (#15127).

Fortunately not having an options file is only a problem for Core where
we have one option in the options file that defaults to true. The solution
implemented in this change is to always pass the option to Meson.

Cherry-pick-of: #15131
Test-bot: skip
2025-11-12 19:30:20 +01:00
Eberhard Beilharz
2d8a4aeebc
maint(core): fix option defaults for Meson >= 1.1
Meson 1.1 changed the name of the options file from `meson_options.txt`
to `meson.options`. Currently we're stuck with Meson 1.0 as minimum
Meson version because we still support Ubuntu 22.04 Jammy, but on some
machines a newer version of meson gets installed which causes the
options to be ignored.

The first attempt to simply symlink or copy `meson_options.txt` to
`meson.options` failed because git on Windows doesn't support symlinks
by default, and Meson complains if it finds two options files (#15127).

Fortunately not having an options file is only a problem for Core where
we have one option in the options file that defaults to true. The solution
implemented in this change is to always pass the option to Meson.

Test-bot: skip
2025-11-10 15:24:46 +01:00
Marc Durdin
a8339bd565
Merge branch 'epic/web-core' into maint/web/build-script-perf 2025-11-10 14:50:59 +01:00
Marc Durdin
bdca09bdeb
Merge pull request #15107 from keymanapp/refactor/web/sentry-manager-to-common-web
refactor(web): move sentry-manager and es-bundling to common 🎼
2025-11-10 14:49:58 +01:00
Marc Durdin
5dbc438f53 maint(resources): add builder_launch function
Use `builder_launch` to launch other builder scripts rather than calling
directly, so that inheritable state and options are passed through.

Test-bot: skip
2025-11-10 11:46:14 +01:00
Marc Durdin
c573709ee6 maint(resources): add build timing report to builder
This is enabled automatically for CI builds, and can be enabled with
`--timing` parameter otherwise. Also, adds `builder_launch`,
documentation to come.

Test-bot: skip
2025-11-10 11:03:45 +01:00
Marc Durdin
aa6b3c328e chore: Merge branch 'epic/web-core' into auto/A19S15-merge-master-into-web-core 2025-11-07 14:23:43 +01:00
Marc Durdin
8eb7e6b0d4 maint(web): cleanup web/**/build.sh for consistency and build performance
* Simplify the build dependency / child tree
* Split building and testing tooling so we don't rebuild components
* Fixup expected outputs to avoid repeated builds of components
* Remove unused dependency references
* Move test.sh targets into build.sh, so that testing doesn't lose
  dependency tracking and cause unnecessary rebuilds. (Note that I have
  not yet deleted test.sh.)
* Make predictive-text a direct child of engine, so that we don't build
  it twice (or even more times)

Test-bot: skip
2025-11-07 10:08:38 +01:00
Marc Durdin
86a903dcf5 refactor(web): move sentry-manager and es-bundling to common
sentry-manager is used by Keyman Engine for Android and Keyman Engine
for iOS, but not directly by KeymanWeb, nor does it have any
dependencies on /web. So it does not make sense to keep it under /web.

es-bundling is used by sentry-manager and potentially other /common/web
tools in the future, so moving it under /common/tools makes it more
consistent in the future.

This is part of simplifying the web source tree; these changes do not
make significant build performance differences at this time.

Test-bot: skip
2025-11-06 15:28:04 +01:00
Markus Greiner
f92483d630
Merge pull request #14900 from keymanapp/fix/common/match-container-permissions
maint(resources): Docker container changes permissions to match the file owner uid and gid
2025-11-04 23:06:28 +01:00
Markus Greiner
473b177050 Handle uid and gid the same way as in the other Dockerfiles 2025-11-04 22:53:26 +01:00
Markus Greiner
e86c419a42
Update resources/docker-images/android/Dockerfile
Forgotten to remove when CHANGE_PERMISSIONS was invented.

Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2025-11-04 22:48:00 +01:00
Marc Durdin
29b02fb955 docs(windows): visual studio 2022
Build-bot: skip
2025-10-31 07:23:43 +01:00
Marc Durdin
3fc29928da maint(resources): include sourcemaps in npm publish
Build-bot: skip release:developer
Test-bot: skip
2025-10-29 17:12:52 +01:00
Marc Durdin
ba9500826d maint(resources): add npm pack/publish to pr-build-status bot 2025-10-29 10:29:14 +01:00
Marc Durdin
f9b25890b6 maint(resources): add meson and emscripten setup to npm-publish
Also splits the build and publish steps so all packages are built before
first is published, as publishing stomps on package.json files, which
makes subsequent builds trickier.

This needs to be merged to master in order for the action steps to pass.

Build-bot: skip
Test-bot: skip
2025-10-29 10:27:29 +01:00
Marc Durdin
3040c72174 maint(resources): skip nvm in npm-publish script
Test-bot: skip
Build-bot: skip
2025-10-28 15:28:24 +01:00
Marc Durdin
e20eb7b4db
Merge pull request #15038 from keymanapp/maint/resources/npm-publish-build-first
maint(resources): add build and test for npm packaging and add status check results
2025-10-28 15:00:04 +01:00
Marc Durdin
17cc7fd321 maint(resources): fix build call in npm-publish 2025-10-28 13:41:55 +01:00
Marc Durdin
fe7209cdeb maint(resources): verify keyman_root 2025-10-28 13:40:48 +01:00
Marc Durdin
7e1d38b498
Merge pull request #15028 from keymanapp/maint/mac/tweak-macos-env
maint(mac): minor tweaks to mac setup, using build.sh
2025-10-28 13:31:39 +01:00
Marc Durdin
c282e557c4 maint(resources): add build and test for npm packaging
Test-bot: skip
Build-bot: skip release:developer
2025-10-28 13:10:04 +01:00
Marc Durdin
ba411774f6 maint(resources): move NPM package publishing to GitHub Actions
Due to recent changes in NPM package publishing security requirements,
we have to move from TeamCity build to a GitHub Action to publish our
NPM packages, so we can take advantage of trusted publishing. This
change also consolidates and centralizes the npm publishing into
resources/build/ci/npm-publish.sh, which removes a lot of boilerplate
from each of the build.sh scripts, and ensures consistency.

Packages will be `npm pack`ed on PR and test builds, and published in
release builds.

Ref: https://docs.npmjs.com/trusted-publishers
Ref: https://github.blog/changelog/2025-09-29-strengthening-npm-security-important-changes-to-authentication-and-token-management/
Fixes: #14963
Test-bot: skip
Build-bot: release:developer
2025-10-27 16:31:55 +01:00
Marc Durdin
1d223908ff maint(mac): minor tweaks to mac setup, using build.sh
Build-bot: skip
Test-bot: skip
2025-10-27 09:10:33 +01:00
Markus Greiner
d9b4ec9baf Weakening condition for gid and uid (after review
Test-bot: skip
Build-bot: skip
2025-10-22 18:02:17 +02:00
Markus Greiner
c9b44d33c7 Changing permissions only in the case if building and testing on GitHub 2025-10-22 15:39:17 +02:00
Markus Greiner
54f5fc1ea3 Privileged mode is not required. 2025-10-21 15:59:06 +02:00
Markus Greiner
fb14a67db6 Docker changes permissions to match the file owner uid and gid
There is an issue that the Docker containers cannot modify the
files on KEYMAN_ROOT, since the user running build and tests on
Docker does not have the same gid and uid as the host user starting
the container.
The issue is solved by temporarily changing the uid and gid to
match the container user's uid and gid.

Test-bot: skip
Build-bot: skip
2025-10-21 15:59:06 +02:00