# elos Debian Packaging Scripts ## Overview This directory contains Debian packaging scripts for building the current source tree as .deb packages. This is primarily for CI pipelines to automatically verify if the packages are buildable or if anything needs to be changed. This is not intended to be used directly for building .deb packages for new releases. ## Building The .deb packages are constructed in the standard Debian way using `debhelper`. The easiest way to build the packages is to just call the `ci/build_debs.sh` script from the top-level directory from inside a Docker/Podman container, which will automatically install all of the necessary dependencies, set the package version, and build the packages using `debhelper`. It's possible to do this all in one line to verify if the packages are buildable on various Debian-based distributions and series. E.g., to build it on Ubuntu Jammy: ```bash docker run --rm -v $(pwd):/build -w /build ubuntu:jammy ci/build_debs.sh ``` or ```bash podman run --rm -v $(pwd):/build -w /build ubuntu:jammy ci/build_debs.sh ``` Please note that there are some dependencies which are not (yet) in the Debian or Ubuntu archives. These have been built and published for Ubuntu in the [elos PPA](https://launchpad.net/~elos-team/+archive/ubuntu/ppa), which is automatically added by the `ci/build_debs.sh` script. This currently restricts builds using the script to Ubuntu systems, as PPAs are not available on other distributions. ## Extending The Debian packaging scripts leverage the existing CMake build system used by elos to build everything, meaning that very little, if anything, generally needs to be changed inside the packaging scripts when a code change is made to elos. The major exception to this is when new libraries or files need to be installed. In most cases, new files and/or folders can be added to the `.install` file corresponding to the package name that the new files and/or folders should belong to. New packages must be added to the `control` file, and their respective files should be added to a new `.install` file matching the name of the new package. ## Release To prepare a new release on `debian/main` run 1. `git checkout -b origin/debian/main` 2. ensure to set `SOURCE_URI` to a repo containing the latest debian releases of the dependency projects 3. `./ci/docker-run.sh ./ci/create_debian_release.sh ` 4. push branch and create MR for **debian/main** , not *main* and not *integration*! ## Packaging Script Maintainer * Isaac True isaac.true@emlix.com [@IsaacJT](https://github.com/IsaacJT)