4. Building Debian Packages¶
Debian-Repos is a set of scripts to build TI’s Debian packages with a single command.
The generation of a Debian package from a binary or source involves many steps such as, obtaining the source code in tar (compressed) format, generating template files, modifying template file. The host build system and host build environment variables should also be configured.
The run.sh script handles these steps, thus the building of a deb package for TI’s packages is as simple as running run.sh with the desired package’s name.
This repository is useful to the following audience:
Potential package contributors who want to fix bugs or add enhancements to TI packages.
Users who want to create a new package with the latest changes or customizations.
Anyone who wants to study Debian packaging.
4.1. Structure:¶
The run.sh file is the “main” script that should be run. It takes as argument the name of the package to be built.
Each TI package has a corresponding directory, named after its source package. Within this directory exists the suite/<distro-variant>/debian/ path. All Debian related files (control, rules, man pages etc) for the package are located here.
There also exists a <package-name>/version.sh file. This file is sourced by run.sh. It exports a bunch of variables for run.sh to use. It also contains a run_prep function, which run.sh calls. run_prep carries out all package-specific operations needed to build the deb files.
4.2. HowTo Use¶
To build a package, the syntax is:
./run.sh <package-name>
This command carries all the necessary steps to build the package. The package and all related files are then stored in build/<package-name>. Note that certain packages may require root privileges.
For example: to build ti-linux-kernel, the command is:
./run.sh ti-linux-kernel
The output is then found in build/ti-linux-kernel/.
4.3. Adding Packages¶
To add a package, follow the following steps:
Create nested directories as follows:
mkdir -p <proj-name>/suite/<distro-variant>/debian/
Copy all
debian/
specific files that are relevant to building the package:
cp /path/to/debian/* <proj-name>/suite/<distro-variant>/debian/
cp /path/to/debian/* -r <proj-name>/suite/<distro-variant>/debian/
In
<proj-name>/
, create theversion.sh
file. The file must export the following variables:
git_repo # link from which to clone
custom_build # set it to true if entire build process must be in version.sh
require_root # set it to true if root privileges required for this package
If custom_build
is true, then the entire build process can be defined in run_custom_build
function in version.sh
file. This will not run any other generic steps to build the deb packages. Refer ti-linux-kernel
package for reference implementation.