Use the following commands to create a Debian package:
sudo apt-get build-dep . # to install build dependencies
sed "s/#DIST#/$(lsb_release -cs)/g" debian/changelog.in > debian/changelog
dpkg-buildpackage --no-sign # omit this argument if you have a private key to sign with
This builds the following binary packages:
libcec8— the shared library (named after the SONAME; supersedes the oldlibcec4-libcec7names)libcec8-dev— headers, the pkg-config and CMake package config, and the static librarycec-utils— thecec-clientandcecc-clientexample clientspython-libcec— the Python 3 bindingslibcec-dotnet— the cross-platformLibCecSharp.NET binding and its NuGet packagenode-libcec— the native Node.js (N-API) binding, installed as a global node modulelibrust-libcec-dev— the Rust binding, as crate sources under/usr/share/cargo/registrylibcec— a meta package pulling in the shared library
The libcec-dotnet package requires the .NET 8 SDK (dotnet-sdk-8.0) at build time
and the .NET 8 runtime at install time; the build enables it via -DENABLE_DOTNET_LIB=1
(see debian/rules). The build also enables the Linux kernel CEC
framework, Exynos and AOCEC backends.
The node-libcec package is built with node-gyp (build-deps: nodejs,
libnode-dev, node-gyp, node-addon-api) rather than cmake's ENABLE_NODE_LIB
option, which uses npm and would need network access. debian/rules builds the
addon against the freshly-staged libCEC via PKG_CONFIG_SYSROOT_DIR and installs
it as a global node module under /usr/lib/<triplet>/nodejs/libcec.
The librust-libcec-dev package does use its cmake option (-DENABLE_RUST_LIB=1,
build-deps: cargo, rustc), because the crate has no dependencies of its own and
therefore builds --offline with no vendored registry. Rust has no stable ABI, so
what ships is the crate source, in the layout dh-cargo produces:
/usr/share/cargo/registry/libcec-<version>/. Consume it by pointing cargo at that
directory in ~/.cargo/config.toml or the project's .cargo/config.toml:
[source.crates-io]
replace-with = "debian"
[source.debian]
directory = "/usr/share/cargo/registry"