Skip to main content

Compilation and Building (for Mini and Small Systems)

Introduction

The compilation and building subsystem is a build framework based on Generate Ninja (GN) and Ninja, which supports component-based OpenHarmony development. This subsystem can be used to:

  • Build products.

  • Build chipset vendor components independently.

  • Build a single component independently.

It is considered best practice to learn the following basic concepts before you start development and build:

  • Component

    A component is a reusable software unit that can contain source code, configuration files, resource files, and build scripts.

  • GN

    GN is short for Generate Ninja, which is a build system used to generate Ninja files.

  • Ninja

    Ninja is a small high-speed build system.

Build Process

The following figure shows the build process.

Figure 1 Build process

  1. hb set: Set the OpenHarmony source code directory and the product to build.
  2. hb build: Build the product, development board, or component. The process to build the solution is as follows:
    • Reading configuration: Read the development board configuration, which covers the toolchain, linking commands, and build options.
    • Running gn: Run the gn gen command to read the product configuration (related to the development board, kernel, and system components) and generate the out directory and ninja files for the solution.
    • Running Ninja: Run ninja -C out/company/product to start build.
    • Packaging: Package the build result to create a file system image.

Directory Structure

build/lite                      # Primary directory
├── components                  # Component description file
├── hb                          # hb pip installation package
├── make_rootfs                 # make script for the file system
├── config                      # Build configuration items
│   ├── component               # Definitions of component-related templates, including static libraries, dynamic libraries, extension components, and emulator libraries
│   ├── kernel                  # Build configuration parameters of the kernel
│   └── subsystem               # Subsystem template
├── ndk                          # NDK-related build scripts and configuration parameters
└── toolchain                   # Build toolchain, which contain the compiler directories, build options, and linking options

Usage

Usage Guidelines

  1. Prerequisites

    • Server and OS version: Linux server running 64-bit Ubuntu 16.04 or later
    • Python version: 3.7.4 or later
    • Repository: build_lite of OpenHarmony source code
  2. Installing hb

    • Run the following command in the root directory of the source code:

      python3 -m pip install --user build/lite
      
    • Run the hb -h command. If the following information is displayed, the installation is successful:

      usage: hb
      
      OHOS build system
      
      positional arguments:
        {build,set,env,clean}
          build               Build source code
          set                 OHOS build settings
          env                 Show OHOS build env
          clean               Clean output
      
      optional arguments:
        -h, --help            Show this help message and exit
      
    • Uninstalling hb

      Run the following command to uninstall hb:

      python3 -m pip uninstall ohos-build
      
  3. Build Commands

    1. hb set

      hb set -h
      usage: hb set [-h] [-root [ROOT_PATH]] [-p]
      
      optional arguments:
        -h, --help            Show this help message and exit.
        -root [ROOT_PATH], --root_path [ROOT_PATH]
                              Set OHOS root path.
        -p, --product         Set OHOS board and kernel.
      
      • If you run hb set with no argument, the default setting process starts.
      • You can run hb set -root [ROOT_PATH] to set the root directory of the source code.
      • hb set -p --product is used to set the product to build.
    2. hb env

      View the current configuration.

      hb env
      [OHOS INFO] root path: xxx
      [OHOS INFO] board: hispark_taurus
      [OHOS INFO] kernel: liteos
      [OHOS INFO] product: ipcamera
      [OHOS INFO] product path: xxx/vendor/hisilicon/ipcamera
      [OHOS INFO] device path: xxx/device/hisilicon/hispark_taurus/sdk_linux_4.19
      
    3. hb build

      hb build -h
      usage: hb build [-h] [-b BUILD_TYPE] [-c COMPILER] [-t [TEST [TEST ...]]]
                      [--dmverity] [-p PRODUCT] [-f] [-n]
                      [component [component ...]]
      
      positional arguments:
        component             Name of the component.
      
      optional arguments:
        -h, --help            Show this help message and exit.
        -b BUILD_TYPE, --build_type BUILD_TYPE
                              Release or debug version.
        -c COMPILER, --compiler COMPILER
                              Specify compiler.
        -t [TEST [TEST ...]], --test [TEST [TEST ...]]
                              Compile test suit.
        --dmverity            Enable dmverity.
        -p PRODUCT, --product PRODUCT
                              Build a specified product with
                              {product_name}@{company}, eg: ipcamera@hisilcon.
        -f, --full            Full code compilation.
        -T [TARGET [TARGET ...]], --target [TARGET [TARGET ...]]
                              Compile single target
      
      • If you run hb build with no argument, the previously configured code directory, product, and options are used for build.
      • You can run hb build {component} to build product components separately based on the development board and kernel set for the product, for example, hb build kv_store.
      • You can run hb build -p PRODUCT to skip the setting step and build the product directly.
      • You can run hb build in device/device_company/board to select the kernel and start build based on the current development board and the selected kernel to generate an image that contains the kernel and driver only.
    4. hb clean

      Clear the build result of the product in the out directory, and leave the args.gn and build.log files only. To clear files in a specified directory, add the directory parameter to the command, for example, hb clean xxx/out/xxx.

      hb clean
      usage: hb clean [-h] [out_path]
      
      positional arguments:
        out_path    Clean a specified path.
      
      optional arguments:
        -h, --help  Show this help message and exit.
      

Repositories Involved

Compilation and building subsystem

build_lite

Metadata

Release files for ohos-build 0.4.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ohos-build 0.4.6
File Size Uploaded Provenance
ohos-build-0.4.6.tar.gz 9.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ohos-build 0.4.6
File Interpreter ABI Platform
ohos_build-0.4.6-py3-none-any.whl Python 3 none any Details

Total release size: 19.0 kB

Release files / ohos-build-0.4.6.tar.gz

Download URL ohos-build-0.4.6.tar.gz
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
95ce6cb03efcc391fac014eb6bb43bd6b870ca6a8f98f1b4e412cef83cd52409
BLAKE2b-256 checksum
How to use checksums
0a127405c147e9a579733be31e6ed11b4c3ffd1821c57c31d1f02a08fd9468ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.0

Release files / ohos_build-0.4.6-py3-none-any.whl

Download URL ohos_build-0.4.6-py3-none-any.whl
Size 9.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0cff5cd92e5778d55a6d2c0802007c2710919a4ddc2aa5af47399a19574be29e
BLAKE2b-256 checksum
How to use checksums
2969c608439e63da8e7a63b4b672e311609c2866bbdf00739aa1ee3506ce4a39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.0

Security for ohos-build 0.4.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page