This is the first part towards removing the dependency on Docker from our build instructions for Linux desktop and Android (#1181). This commit makes it clear that you can build 'libmozc.so' on both Linux and macOS by the same Bazel command with actually demonstrating it in .github/workflows/android.yaml that 'libmozc.so' can be built on both Linux and macOS GitHub Actions runners. With above our 'Dockerfile' can stop setting up Android NDK since 'build_mozc_in_docker.md' does not mention Android any more. This commit is only about the build instructions of 'libmozc.so' for Android. There must be no difference in the final artifacts. PiperOrigin-RevId: 729468755
6.1 KiB
How to build Mozc in Docker
Summary
If you are not sure what the following commands do, please check the descriptions below and make sure the operations before running them.
curl -O https://raw.githubusercontent.com/google/mozc/master/docker/ubuntu24.04/Dockerfile
docker build --rm --tag mozc_ubuntu24.04 .
docker create --interactive --tty --name mozc_build mozc_ubuntu24.04
docker start mozc_build
docker exec mozc_build bazelisk build package --config oss_linux --config release_build
docker cp mozc_build:/home/mozc_builder/work/mozc/src/bazel-bin/unix/mozc.zip .
Introduction
Docker containers are available to build Mozc binaries for Linux desktop.
System Requirements
Currently, only Ubuntu 24.04 is tested to host the Docker container to build Mozc.
- Dockerfile for Ubuntu 24.04
Build in Docker
Set up Ubuntu 24.04 Docker container
curl -O https://raw.githubusercontent.com/google/mozc/master/docker/ubuntu24.04/Dockerfile
docker build --rm --tag mozc_ubuntu24.04 .
docker create --interactive --tty --name mozc_build mozc_ubuntu24.04
You may need to execute docker
with sudo
(e.g. sudo docker build ...
).
Notes
mozc_ubuntu24.04
is a Docker image name (customizable).mozc_build
is a Docker container name (customizable).- Don't forget to rebuild Docker container when Dockerfile is updated.
Build Mozc in Docker container
docker start mozc_build
docker exec mozc_build bazelisk build package --config oss_linux --config release_build
docker cp mozc_build:/home/mozc_builder/work/mozc/src/bazel-bin/unix/mozc.zip .
mozc.zip
contains built files.
Notes
- You might want to execute
docker stop
after build. mozc_build
is the Docker container name created in the above section.
Build Mozc for Linux Desktop
bazelisk build package --config oss_linux --config release_build
Note: You might want to execute docker start --interactive mozc_build
to enter the docker container before the above command.
package
builds Mozc binaries and locates them into mozc.zip
as follows.
build rule | install path |
---|---|
//server:mozc_server | /usr/lib/mozc/mozc_server |
//gui/tool:mozc_tool | /usr/lib/mozc/mozc_tool |
//renderer:mozc_renderer | /usr/lib/mozc/mozc_renderer |
//unix/ibus/ibus_mozc | /usr/lib/ibus-mozc/ibus-engine-mozc |
//unix/ibus:gen_mozc_xml | /usr/share/ibus/component/mozc.xml |
//unix:icons | /usr/share/ibus-mozc/... |
//unix:icons | /usr/share/icons/mozc/... |
//unix/emacs:mozc.el | /usr/share/emacs/site-lisp/emacs-mozc/mozc.el |
//unix/emacs:mozc_emacs_helper | /usr/bin/mozc_emacs_helper |
Install paths are configurable by modifying src/config.bzl.
Unit tests
Run all tests
bazelisk test ... --config oss_linux --build_tests_only -c dbg
...
means all targets under the current and subdirectories.
Run tests under the specific directories
bazelisk test base/... composer/... --config oss_linux --build_tests_only -c dbg
<dir>/...
means all targets under the<dir>/
directory.
Run tests without the specific directories
bazelisk test ... --config oss_linux --build_tests_only -c dbg -- -base/...
--
means the end of the flags which start from-
.-<dir>/...
means exclusion of all targets under thedir
.
Run the specific test
bazelisk test base:util_test --config oss_linux -c dbg
util_test
is defined inbase/BUILD.bazel
.
Output logs to stderr
bazelisk test base:util_test --config oss_linux --test_arg=--stderrthreshold=0 --test_output=all
- The
--test_arg=--stderrthreshold=0 --test_output=all
flags shows the output of unitests to stderr.
Build Mozc on other Linux environment
Note: This section is not about our officially supported build process.
Software requirements
- Python: 3.7 or later
- Ibus: 1.5.4 or later
- libglib
- Qt6: 6.2.5 or later, or Qt 6.2.x with working around QTBUG-86080 by yourself
- libgl
You may also need other libraries. See the configurations of Dockerfile and GitHub Actions.
Build configurations
To build Mozc on other Linux environment rather than the supported Docker environment, you might need to modify the following files.
- src/config.bzl - configuration of install paths, etc.
- src/.bazelrc - compiler flags, etc.
- src/MODULE.bazel - build dependencies.
Tips: the following command makes the specified file untracked by Git.
git update-index --assume-unchanged src/config.bzl
This command reverts the above change.
git update-index --no-assume-unchanged src/config.bzl
Forcing reconfigure external dependencies
You may have some build errors when you update build environment or configurations. In that case, try the following command to refetch external repositories.
bazelisk sync --configure
If the issue persists, also try the following command to clean Bazel's build cache
bazelisk clean --expunge
Build Mozc for Linux Desktop with GYP (deprecated):
⚠️ The GYP build is deprecated and no longer supported.
Please check the previous version for more information. https://github.com/google/mozc/blob/2.29.5374.102/docs/build_mozc_in_docker.md#build-mozc-for-linux-desktop-with-gyp-maintenance-mode