summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-15 07:00:57 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-15 07:00:57 +0000
commit7e667828c1b2f1ea953459f277907876df1ae75e (patch)
tree41075a09dceb28bac2a319abe96b716eb5ad2669
parent9d4c082a9c48d459901ff1887a726c7241cfc767 (diff)
automatic import of python-ohos-build
-rw-r--r--.gitignore1
-rw-r--r--python-ohos-build.spec661
-rw-r--r--sources1
3 files changed, 663 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..149cd3c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/ohos-build-0.4.6.tar.gz
diff --git a/python-ohos-build.spec b/python-ohos-build.spec
new file mode 100644
index 0000000..3866b20
--- /dev/null
+++ b/python-ohos-build.spec
@@ -0,0 +1,661 @@
+%global _empty_manifest_terminate_build 0
+Name: python-ohos-build
+Version: 0.4.6
+Release: 1
+Summary: OHOS build command line tool
+License: Apache 2.0
+URL: https://gitee.com/openharmony/build_lite
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/0a/12/7405c147e9a579733be31e6ed11b4c3ffd1821c57c31d1f02a08fd9468ba/ohos-build-0.4.6.tar.gz
+BuildArch: noarch
+
+Requires: python3-PyYAML
+Requires: python3-kconfiglib
+Requires: python3-prompt-toolkit
+Requires: python3-requests
+
+%description
+# Compilation and Building \(for Mini and Small Systems\)<a name="EN-US_TOPIC_0000001130006475"></a>
+
+- [Introduction](#section11660541593)
+- [Directory Structure](#section161941989596)
+- [Usage](#section1312121216216)
+ - [Usage Guidelines](#section129654513264)
+
+- [Repositories Involved](#section1371113476307)
+
+## Introduction<a name="section11660541593"></a>
+
+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<a name="fig1531311552204"></a>
+![](figures/build-process.jpg "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<a name="section161941989596"></a>
+
+```
+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<a name="section1312121216216"></a>
+
+### Usage Guidelines<a name="section129654513264"></a>
+
+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<a name="section1371113476307"></a>
+
+Compilation and building subsystem
+
+**[build\_lite](https://gitee.com/openharmony/build_lite)**
+
+
+
+
+%package -n python3-ohos-build
+Summary: OHOS build command line tool
+Provides: python-ohos-build
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-ohos-build
+# Compilation and Building \(for Mini and Small Systems\)<a name="EN-US_TOPIC_0000001130006475"></a>
+
+- [Introduction](#section11660541593)
+- [Directory Structure](#section161941989596)
+- [Usage](#section1312121216216)
+ - [Usage Guidelines](#section129654513264)
+
+- [Repositories Involved](#section1371113476307)
+
+## Introduction<a name="section11660541593"></a>
+
+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<a name="fig1531311552204"></a>
+![](figures/build-process.jpg "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<a name="section161941989596"></a>
+
+```
+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<a name="section1312121216216"></a>
+
+### Usage Guidelines<a name="section129654513264"></a>
+
+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<a name="section1371113476307"></a>
+
+Compilation and building subsystem
+
+**[build\_lite](https://gitee.com/openharmony/build_lite)**
+
+
+
+
+%package help
+Summary: Development documents and examples for ohos-build
+Provides: python3-ohos-build-doc
+%description help
+# Compilation and Building \(for Mini and Small Systems\)<a name="EN-US_TOPIC_0000001130006475"></a>
+
+- [Introduction](#section11660541593)
+- [Directory Structure](#section161941989596)
+- [Usage](#section1312121216216)
+ - [Usage Guidelines](#section129654513264)
+
+- [Repositories Involved](#section1371113476307)
+
+## Introduction<a name="section11660541593"></a>
+
+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<a name="fig1531311552204"></a>
+![](figures/build-process.jpg "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<a name="section161941989596"></a>
+
+```
+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<a name="section1312121216216"></a>
+
+### Usage Guidelines<a name="section129654513264"></a>
+
+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<a name="section1371113476307"></a>
+
+Compilation and building subsystem
+
+**[build\_lite](https://gitee.com/openharmony/build_lite)**
+
+
+
+
+%prep
+%autosetup -n ohos-build-0.4.6
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-ohos-build -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 0.4.6-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..ca866df
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+01e2001d8bb9279291f2a4b0d781c777 ohos-build-0.4.6.tar.gz