Previously we tried to include all necessary files in the Linux source
tarball, so that a user would be able to successfully run the top-level
`build.sh` file. However, that causes problems when new dependencies
between sub-projects get introduced that would require adding additional
sub-projects to the tarball.
This change modifies the tarball to only include files that are necessary
to run the `linux/build.sh` file, i.e. necessary to build Keyman for
Linux. This is likely what users would expect when they download a source
tarball for Linux. If users want to build other parts of Keyman that are
buildable on Linux they can download the source tarball that the GitHub
releases page provides, or clone the repo.
In order to be able to still run the top-level `build.sh` script, this
change replaces the top-level `build.sh` with a script that simply
forwards the arguments to `linux/build.sh`.
This change also reverts the recent introduction of a *.pkg.tar.xz file
that contained all files necessary to build a Debian/Ubuntu package. There
wouldn't be a difference anymore between the two .tar.xz files.
Fixes: #16004Fixes: #16005
Build-bot: skip build:linux
Test-bot: skip
When running on CI kmcmplib gets fully build, which requires emscripten.
This change installs emscripten before running the source tarball
verification.
Also modify `launchpad.sh` and add option `--no-sign` so that we don't
have to set up things for signing. Use long options for `debuild` where
possible.
Build-bot: skip build:linux
Test-bot: skip
- fix tarball to include `common/schemas`
- use `*.pkg.tar.xz` for running lintian
- also add 'Linux source verification' to PR status check
Test-bot: skip
maint(linux): fix uploading to ppa 🏗️
It seems that since a recent DDOS Launchpad only accepts secure connections. This change uses the new keyman-ppa section (which has already been created on the TC build agents) to upload to the ppa.
Follows: #15928
maint(core): retry upload to launchpad on network failures 🏗️
This change adds a retry mechanism for failed uploads to Launchpad. By default it tries 5 times.
Follows: #15928
maint(core): exclude `.configured` files from source tarball 🏗️
In the source tarball we don't want to include `.configured` files so that a build will call `npm i` first.
Fixes: #15905
Follows: #15926
chore(linux): make `debian.sh` a builder script 🏗️
This change modifies `debian.sh` so that it is a full builder script. This allows further cleanup in `package-build.inc.sh`.
Follows: #15916
It seems that since a recent DDOS Launchpad only accepts secure
connections. This change uses the new `keyman-ppa` section (which has
already been created on the TC build agents) to upload to the ppa.
Build-bot: skip
Test-bot: skip
- make `verify_source.sh` a full builder script
- make options for `launchpad.sh` less confusing
- reference `--help` in `packaging.md`
- run new script as part of Ubuntu packaging workflow
Co-authored-by: Marc Durdin <marc@durdin.net>
In the source tarball we don't want to include `.configured` files so
that a build will call `npm i` first.
Fixes: #15905
Follows: #15926
Test-bot: skip
The source tarball we upload to downloads.keyman.com contains all files
necessary to run `${KEYMAN_ROOT}/build.sh`, i.e. it contains all projects
that can be build on Linux. However, that is not the command used when
building Debian packages. There we limit the build to the `linux`
subfolder. Therefore we only need a subset of the files. Using the full
tarball causes some lintian errors.
This change creates and uploads a second tarball on release builds that
contains only the files needed for Debian packaging. The file is named
`keyman_$VERSION.pkg.tar.xz`.
Build-bot: skip
Test-bot: skip
The option to be able to specify a project for some linux scripts was
left over from older Keyman versions where Keyman was split over several
source packages. The current Keyman version builds multiple binary
Debian packages from just one source package, so this option is no longer
needed. This change gets rid of it.
Build-bot: skip
Test-bot: skip
This change modifies `debian.sh` so that it is a full builder script. This
allows further cleanup in `package-build.inc.sh`.
Follows: #15916
Build-bot: skip
Test-bot: skip
This change adds a new GitHub action that verifies that Keyman can build
from the source package. Also check that source package used for Launchpad
and Debian/Ubuntu packaging doesn't produce lintian errors. Previously
lintian errors did go unnoticed because they didn't stop the build.
Also refactor `launchpad.sh` script to be a proper builder script, and add
some new parameters to allow skipping some steps in the script.
Build-bot: skip
Test-bot: skip
With this change it's possible to build Keyman from the source tarball
by running `./build.sh` from the Keyman root directory.
When building Keyman as part of the Ubuntu/Debian packaging, we don't use
the toplevel `build.sh` file but instead call the build scripts in the
subdirectories. This omits building some components that are currently
not needed for running Keyman for Linux. The `dist.sh` script only
includes the necessary files in this case, distinguished by the `origdist`
parameter. This results in a significantly smaller tarball (2.5MB vs 51MB).
This change also enhances the `generate_tar_ignore_list` function so that
it is now possible to add `build` to the exclude list to ignore all
`build` subdirectories.
Fixes: #15544
Build-bot: skip
Test-bot: skip
Support for Ubuntu 25.04 Plucky ends on 15th January 2026 after which
it is no longer possible to upload and build on Launchpad. This change
removes Plucky.
Fixes: #14955
Test-bot: skip
This change adds a manual test that allows to see if all strings are
localizable. It also fixes the `update-template` target in the
`Makefile`.
Build-bot: skip
Test-bot: skip
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
This change creates a temporary worktree for creating Debian packages. This will allow us to work from a clean state of the source repo. Also exclude any generated patch directories (`.pc`).
This generates the `--tar-ignore`s to avoid having to manually maintain the list when adding new files or folders for other platforms. Instead now we have a list of files and directories to include, and a list of exceptions to exclude from the includes. From that we generate the tar-ignore list.
Fixes: #14563
This generates the `--tar-ignore`s to avoid having to manually maintain
the list when adding new files or folders for other platforms. Instead
now we have a list of files and directories to include, and a list of
exceptions to exclude from the includes. From that we generate the
tar-ignore list.
Fixes: #14563
Test-bot: skip
During a package build a patch directory (`.pc`) might get created.
That can't and shouldn't be part of the source package. This change
excludes any `.pc` directories.
Build-bot: skip
Test-bot: skip
This change creates a temporary worktree for creating Debian packages.
This will allow us to work from a clean state of the source repo. Also
exclude any generated patch directories (`.pc`).
Build-bot: skip
Test-bot: skip
Previously the assumption was that `launchpad.sh` would be run from the
`linux` directory. This change sets the directory at the beginning of
the script, allowing it to be run from any directory. Also specify full
path to `launchpad.sh` in the TC build script.
Build-bot: skip
Test-bot: skip
* Also renames resources/environment.sh to resources/build/mac/xcode-environment.inc.sh.
* Adds a few more exclusions to linux/scripts/dist.sh
Fixes: #14478
Test-bot: skip
Build-bot: build
Clarifies the confusing builder.inc.sh / build-utils.sh distinction by
giving the scripts more appropriate names. Most build scripts should use
builder-full.inc.sh; some helper scripts can use builder-basic.inc.sh.
Documented in resources/build/README.md.
Renames:
* resources/build/builder.inc.sh to resources/build/builder-full.inc.sh
* resources/build/build-utils.sh to resources/build/builder-basic.inc.sh
Other changes:
* Moves Android-specific functions out of builder-basic.inc.sh and into
android/build.sh.
* Renames functions in builder-basic.inc.sh
More functions may be moved from builder-basic.inc.sh into utils.inc.sh
or other scripts in the future.
Fixes: #14065
Build-bot: build all
Test-bot: skip