Adds deb building scripts
This commit is contained in:
25
core/Dockerfile.deb
Normal file
25
core/Dockerfile.deb
Normal file
@@ -0,0 +1,25 @@
|
||||
FROM debian:bookworm
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
build-essential \
|
||||
make \
|
||||
pkg-config \
|
||||
libssl-dev \
|
||||
libsqlite3-dev \
|
||||
libdbus-1-dev \
|
||||
libsystemd-dev \
|
||||
dpkg \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||
ENV PATH="/root/.cargo/bin:${PATH}"
|
||||
|
||||
RUN cargo install cargo-deb
|
||||
|
||||
WORKDIR /workspace
|
||||
|
||||
COPY . .
|
||||
|
||||
CMD ["make", "deb"]
|
||||
@@ -15,6 +15,14 @@ rpm:
|
||||
strip -s target/release/kptui
|
||||
cargo generate-rpm -p kordophoned
|
||||
|
||||
.PHONY: deb
|
||||
deb:
|
||||
cargo build --release --workspace
|
||||
strip -s target/release/kordophoned
|
||||
strip -s target/release/kpcli
|
||||
strip -s target/release/kptui
|
||||
cargo deb -p kordophoned --no-build
|
||||
|
||||
.PHONY: pi-zero
|
||||
pi-zero:
|
||||
CARGO_TARGET_DIR=target/cross/arm-unknown-linux-gnueabihf \
|
||||
|
||||
@@ -91,6 +91,16 @@ strip -s target/release/kordophoned
|
||||
cargo generate-rpm
|
||||
```
|
||||
|
||||
### Packaging (DEB example)
|
||||
|
||||
`kordophoned` is configured for Debian packaging via `cargo-deb`.
|
||||
|
||||
```bash
|
||||
cargo install cargo-deb
|
||||
cd core
|
||||
cargo deb -p kordophoned
|
||||
```
|
||||
|
||||
## `kpcli` (CLI)
|
||||
|
||||
Useful for quick testing and interacting with the daemon/cache.
|
||||
|
||||
@@ -50,3 +50,14 @@ assets = [
|
||||
{ source = "../target/release/kptui", dest = "/usr/bin/kptui", mode = "755" },
|
||||
{ source = "include/net.buzzert.kordophonecd.service", dest = "/usr/share/dbus-1/services/net.buzzert.kordophonecd.service", mode = "644" },
|
||||
]
|
||||
|
||||
[package.metadata.deb]
|
||||
maintainer = "James Magahern <james@magahern.com>"
|
||||
section = "net"
|
||||
priority = "optional"
|
||||
assets = [
|
||||
["../target/release/kordophoned", "usr/libexec/kordophoned", "755"],
|
||||
["../target/release/kpcli", "usr/bin/kpcli", "755"],
|
||||
["../target/release/kptui", "usr/bin/kptui", "755"],
|
||||
["include/net.buzzert.kordophonecd.service", "usr/share/dbus-1/services/net.buzzert.kordophonecd.service", "644"],
|
||||
]
|
||||
|
||||
@@ -14,6 +14,17 @@ strip -s target/release/kordophoned
|
||||
cargo generate-rpm
|
||||
```
|
||||
|
||||
# Building DEB
|
||||
|
||||
Make sure cargo-deb is installed, `cargo install cargo-deb`.
|
||||
|
||||
Then:
|
||||
|
||||
```bash
|
||||
cd core
|
||||
cargo deb -p kordophoned
|
||||
```
|
||||
|
||||
## Running on macOS
|
||||
|
||||
Before any client can talk to the kordophone daemon on macOS, the XPC service needs to be manually registered with launchd.
|
||||
@@ -34,4 +45,3 @@ and the following in Info.plist:
|
||||
<key>MachServices</key><dict><key>net.buzzert.kordophonecd</key><true/></dict>
|
||||
<key>KeepAlive</key><true/>
|
||||
```
|
||||
|
||||
|
||||
25
gtk/Dockerfile.deb
Normal file
25
gtk/Dockerfile.deb
Normal file
@@ -0,0 +1,25 @@
|
||||
FROM debian:trixie
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
dpkg \
|
||||
make \
|
||||
build-essential \
|
||||
python3 \
|
||||
imagemagick \
|
||||
meson \
|
||||
ninja-build \
|
||||
valac \
|
||||
pkg-config \
|
||||
libgtk-4-dev \
|
||||
libadwaita-1-dev \
|
||||
libglib2.0-dev \
|
||||
libgee-0.8-dev \
|
||||
libsecret-1-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /workspace
|
||||
|
||||
COPY . .
|
||||
|
||||
CMD ["make", "deb"]
|
||||
@@ -11,4 +11,6 @@ rpm:
|
||||
git -C .. archive --format=tar.gz --prefix=kordophone/ -o $(TMP)/v$(VER).tar.gz HEAD
|
||||
rpmbuild -ba dist/rpm/kordophone.spec --define "_sourcedir $(TMP)"
|
||||
|
||||
deb:
|
||||
./dist/deb/build-deb.sh $(VER)
|
||||
|
||||
|
||||
@@ -5,3 +5,5 @@ Libadwaita/GTK4 client for the Kordophone client daemon.
|
||||
# Building
|
||||
|
||||
Build an RPM using `rpmbuild -ba dist/rpm/kordophone.spec`
|
||||
|
||||
Build a DEB using `make deb`
|
||||
|
||||
6
gtk/dist/deb/.gitignore
vendored
Normal file
6
gtk/dist/deb/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
*.deb
|
||||
*.buildinfo
|
||||
*.changes
|
||||
*.dsc
|
||||
*.tar.*
|
||||
*.build
|
||||
49
gtk/dist/deb/build-deb.sh
vendored
Executable file
49
gtk/dist/deb/build-deb.sh
vendored
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
VERSION="${1:-}"
|
||||
if [[ -z "$VERSION" ]]; then
|
||||
VERSION="$(sed -n "s/.*version[[:space:]]*:[[:space:]]*'\\([^']*\\)'.*/\\1/p" meson.build | head -n1)"
|
||||
fi
|
||||
if [[ -z "$VERSION" ]]; then
|
||||
echo "Could not determine version (pass as first arg)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ARCH="$(dpkg --print-architecture)"
|
||||
PKG="kordophone"
|
||||
|
||||
STAGE="$(mktemp -d)"
|
||||
trap 'rm -rf "$STAGE"' EXIT
|
||||
|
||||
PKGROOT="$STAGE/pkgroot"
|
||||
mkdir -p "$PKGROOT/DEBIAN"
|
||||
|
||||
BUILD_DIR="$STAGE/build"
|
||||
meson setup "$BUILD_DIR" --prefix=/usr
|
||||
ninja -C "$BUILD_DIR"
|
||||
DESTDIR="$PKGROOT" ninja -C "$BUILD_DIR" install
|
||||
|
||||
INSTALLED_SIZE_KB="$(du -sk "$PKGROOT/usr" | awk '{print $1}')"
|
||||
|
||||
cat >"$PKGROOT/DEBIAN/control" <<EOF
|
||||
Package: ${PKG}
|
||||
Version: ${VERSION}
|
||||
Section: net
|
||||
Priority: optional
|
||||
Architecture: ${ARCH}
|
||||
Maintainer: James Magahern <james@magahern.com>
|
||||
Installed-Size: ${INSTALLED_SIZE_KB}
|
||||
Depends: libgtk-4-1, libadwaita-1-0, libglib2.0-0, libgee-0.8-2, libsecret-1-0, kordophoned (>= 1.0.0)
|
||||
Description: GTK4/Libadwaita client for Kordophone
|
||||
A GTK4/Libadwaita Linux client for the Kordophone client daemon.
|
||||
EOF
|
||||
|
||||
OUT_DIR="$ROOT_DIR/dist/deb"
|
||||
mkdir -p "$OUT_DIR"
|
||||
OUT_DEB="${OUT_DIR}/${PKG}_${VERSION}_${ARCH}.deb"
|
||||
dpkg-deb --root-owner-group --build "$PKGROOT" "$OUT_DEB"
|
||||
echo "$OUT_DEB"
|
||||
@@ -1,5 +1,5 @@
|
||||
project('kordophone', 'vala',
|
||||
version : '1.0.1',
|
||||
version : '1.0.2',
|
||||
meson_version : '>=0.56.0',
|
||||
default_options : ['warning_level=2']
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user