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
|
strip -s target/release/kptui
|
||||||
cargo generate-rpm -p kordophoned
|
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
|
.PHONY: pi-zero
|
||||||
pi-zero:
|
pi-zero:
|
||||||
CARGO_TARGET_DIR=target/cross/arm-unknown-linux-gnueabihf \
|
CARGO_TARGET_DIR=target/cross/arm-unknown-linux-gnueabihf \
|
||||||
|
|||||||
@@ -91,6 +91,16 @@ strip -s target/release/kordophoned
|
|||||||
cargo generate-rpm
|
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)
|
## `kpcli` (CLI)
|
||||||
|
|
||||||
Useful for quick testing and interacting with the daemon/cache.
|
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 = "../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" },
|
{ 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
|
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
|
## Running on macOS
|
||||||
|
|
||||||
Before any client can talk to the kordophone daemon on macOS, the XPC service needs to be manually registered with launchd.
|
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>MachServices</key><dict><key>net.buzzert.kordophonecd</key><true/></dict>
|
||||||
<key>KeepAlive</key><true/>
|
<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
|
git -C .. archive --format=tar.gz --prefix=kordophone/ -o $(TMP)/v$(VER).tar.gz HEAD
|
||||||
rpmbuild -ba dist/rpm/kordophone.spec --define "_sourcedir $(TMP)"
|
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
|
# Building
|
||||||
|
|
||||||
Build an RPM using `rpmbuild -ba dist/rpm/kordophone.spec`
|
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',
|
project('kordophone', 'vala',
|
||||||
version : '1.0.1',
|
version : '1.0.2',
|
||||||
meson_version : '>=0.56.0',
|
meson_version : '>=0.56.0',
|
||||||
default_options : ['warning_level=2']
|
default_options : ['warning_level=2']
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user