spiegel-keyman/docs/build/linux-ubuntu.md
Darcy Wong 9e564b6908 docs(android): Don't set JAVA_HOME_11
Per review comment
2023-04-17 13:29:59 +07:00

3.6 KiB

Setup your Keyman build environment on Ubuntu

Target Projects

On Linux, you can build the following projects:

  • Keyman Core (wasm targets)
  • Common/Web
  • KeymanWeb

The following projects cannot be built on Linux:

  • Keyman for Windows
  • Keyman Developer
  • Keyman for macOS
  • Keyman for iOS

System Requirements

  • Minimum Ubuntu version: Ubuntu 20.04

Other Linux distributions will also work if appropriate dependencies are installed.

Repository Paths

Recommended filesystem layout:

$HOME/keyman/
  keyman/              this repository (https://github.com/keymanapp/keyman)
  keyboards/           https://github.com/keymanapp/keyboards
  sites/
    keyman.com/        https://github.com/keymanapp/keyman.com
    ...

Prerequisites

The current list of dependencies can be found in the Build-Depends section of linux/debian/control. They are most easily installed with the mk-build-deps tool:

sudo apt update
sudo apt install devscripts equivs
sudo mk-build-deps --install linux/debian/control

Keyman for Linux

All dependencies are already installed if you followed the instructions under Prerequisites.

Building:

Keyman Core

All dependencies are already installed if you followed the instructions under Prerequisites.

Building:

Docker Builder

The Docker builder allows you to perform a linux build from anywhere Docker is supported. To build the docker image:

cd ../../linux
docker pull ubuntu:latest
docker build . -t keymanapp/keyman-linux-builder:latest

Once the image is built, it may be used to build parts of Keyman.

  • core
# build 'core' in docker
cd ../core
# keep linux build artifacts separate
mkdir -p build/linux
docker run -it --rm -v $(pwd)/..:/home/build -v $(pwd)/build/linux:/home/build/core/build keyman-linux-builder:latest bash -c 'cd core; bash build.sh -d'
  • linux
# build 'linux' installation in docker
# runs as root!
# note: run 'git clean -fdx linux' afterwards to cleanup
cd keymanapp/keyman
docker run -it --rm -v $(pwd):/home/build/src/keyman -u root -w /home/build/src/keyman keymanapp/keyman-linux-builder:latest bash -c "cd linux && make reconf && make fullbuild && make install"

Keyman for Android

Dependencies:

Additional requirements:

  • Android SDK
  • Android Studio
  • Gradle
  • Maven
  • OpenJDK 11 (for Keyman 17.0+)

Run Android Studio once after installation to install additional components such as emulator images and SDK updates.

Required environment variables:

Building:

Prerequisites

Many dependencies are only required for specific projects.

Base Dependencies

Environment variables:

Notes on Environment Variables

JAVA_HOME

This environment variable tells Gradle what version of Java to use for building Keyman for Android. OpenJDK 11 is used for master. It's recommended to set the environment variables to:

EXPORT JAVA_HOME="[path to OpenJDK 11]"

Also edit /etc/profile.d/jvm.sh as sudo:

EXPORT JAVA_HOME="[path to OpenJDK 11]"