From 705955e61870393413dbb0fe32b1b6a6d803923d Mon Sep 17 00:00:00 2001 From: Russ Dill Date: Wed, 15 Oct 2025 01:31:44 -0700 Subject: [PATCH] Add debian build This adds a debian build to uci following the model of libubox and ubus. The packages produced are uci libuci0 libuci-dev libuci-plugin-lua5.1 --- .gitignore | 12 ++++++++ CMakeLists.txt | 7 +++++ debian/control | 45 +++++++++++++++++++++++++++++ debian/generate-changelog.sh | 15 ++++++++++ debian/libuci-dev.install | 2 ++ debian/libuci-plugin-lua5.1.install | 1 + debian/libuci0.install | 1 + debian/rules | 19 ++++++++++++ debian/source/format | 1 + debian/uci.install | 1 + debian/watch | 5 ++++ 11 files changed, 109 insertions(+) create mode 100644 debian/control create mode 100755 debian/generate-changelog.sh create mode 100644 debian/libuci-dev.install create mode 100644 debian/libuci-plugin-lua5.1.install create mode 100644 debian/libuci0.install create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 debian/uci.install create mode 100644 debian/watch diff --git a/.gitignore b/.gitignore index 8d2927f..80cea9d 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,15 @@ uci_config.h tests/shunit2/save tests/cram/*.t.err .venv + +obj-* +debian/.debhelper/ +debian/debhelper-build-stamp +debian/*.debhelper.log +debian/*.substvars +debian/files +debian/libuci-dev/ +debian/libuci-plugin-lua5.1/ +debian/libuci0/ +debian/changelog +debian/tmp/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 9add836..fe27dd0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,3 +88,10 @@ INSTALL(TARGETS uci cli RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) +ADD_CUSTOM_TARGET(debian + COMMAND ${CMAKE_COMMAND} -E echo "Generating debian/changelog from git..." + COMMAND ${CMAKE_SOURCE_DIR}/debian/generate-changelog.sh + COMMAND dpkg-buildpackage -b -uc -us + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Building Debian package" +) diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..4bf38e4 --- /dev/null +++ b/debian/control @@ -0,0 +1,45 @@ +Source: uci +Section: libs +Priority: optional +Maintainer: Russ Dill +Build-Depends: debhelper-compat (= 13), + cmake, + ninja-build, + libubox-dev (>= 2021~) | libubox-dev, + liblua5.1-dev, lua5.1 +Standards-Version: 4.7.0 +Homepage: https://github.com/openwrt/uci +Rules-Requires-Root: no + +Package: libuci0 +Section: libs +Architecture: any +Multi-Arch: same +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Unified Configuration Interface (runtime library) + UCI (Unified Configuration Interface) is OpenWrt’s configuration system. + This package provides the shared library (SONAME 0). + +Package: libuci-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: libuci0 (= ${binary:Version}), ${misc:Depends} +Description: Unified Configuration Interface (development files) + Headers and the development symlink for libuci. + +Package: uci +Section: admin +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, libuci0 (= ${binary:Version}) +Description: Unified Configuration Interface (command-line utility) + The uci CLI manipulates configuration stored in UCI format. + +Package: libuci-plugin-lua5.1 +Section: libs +Architecture: any +Multi-Arch: same +Depends: ${shlibs:Depends}, ${misc:Depends}, libuci0 (= ${binary:Version}) +Description: Unified Configuration Interface (Lua module) + Lua 5.1 binding for libuci. + diff --git a/debian/generate-changelog.sh b/debian/generate-changelog.sh new file mode 100755 index 0000000..61039b6 --- /dev/null +++ b/debian/generate-changelog.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +cd "$(dirname "$0")/.." + +COMMIT_DATE=$(git log -1 --format='%cd' --date=format:'%Y%m%d' 2>/dev/null || echo '00000000') +COMMIT_HASH=$(git log -1 --format='%h' 2>/dev/null || echo 'unknown') +COMMIT_TIMESTAMP=$(git log -1 --format='%cd' --date=rfc2822 2>/dev/null || date -R) + +cat > debian/changelog < ${COMMIT_TIMESTAMP} +EOF diff --git a/debian/libuci-dev.install b/debian/libuci-dev.install new file mode 100644 index 0000000..eb62b61 --- /dev/null +++ b/debian/libuci-dev.install @@ -0,0 +1,2 @@ +usr/include/uci*.h +usr/lib/*/libuci.so diff --git a/debian/libuci-plugin-lua5.1.install b/debian/libuci-plugin-lua5.1.install new file mode 100644 index 0000000..e20bba5 --- /dev/null +++ b/debian/libuci-plugin-lua5.1.install @@ -0,0 +1 @@ +usr/lib/*/lua/5.1/uci.so diff --git a/debian/libuci0.install b/debian/libuci0.install new file mode 100644 index 0000000..27dc01d --- /dev/null +++ b/debian/libuci0.install @@ -0,0 +1 @@ +usr/lib/*/libuci.so.0* diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..7bf22d0 --- /dev/null +++ b/debian/rules @@ -0,0 +1,19 @@ +#!/usr/bin/make -f +export DEB_BUILD_MAINT_OPTIONS=hardening=+all + +%: + dh $@ --buildsystem=cmake + +DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) + +override_dh_auto_configure: + dh_auto_configure -- \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DBUILD_EXAMPLES=OFF \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DABIVERSION:STRING=0.0 \ + -DBUILD_LUA=ON \ + -DBUILD_STATIC=OFF \ + -DLUAPATH=/usr/lib/$(DEB_HOST_MULTIARCH)/lua/5.1 + +# Let dh_makeshlibs capture shlibs and apply the SONAME. diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/debian/uci.install b/debian/uci.install new file mode 100644 index 0000000..b3c9fea --- /dev/null +++ b/debian/uci.install @@ -0,0 +1 @@ +usr/bin/uci diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..9bbacbb --- /dev/null +++ b/debian/watch @@ -0,0 +1,5 @@ +version=4 +# Upstream mirrors to git.openwrt.org without formal releases; you can snapshot. +# Example (replace when tags exist): +# opts=filenamemangle=s/.+\/uci-(\d\S+)\.tar\.gz/uci-$1\.tar\.gz/ \ +# https://git.openwrt.org/?p=project/uci.git;a=tags .*/v?(\d\S+