#!/bin/sh # Build one Debian package. # build-deb.sh set -eu kind=$1 version=$2 arch=$3 out=$4 root=$(cd "$(dirname "$0")/.." && pwd) stage=$root/build/deb-$kind-$arch rm -rf "$stage" case $kind in client) pkg=keeporg binary=keeporg mkdir -p "$stage/usr/bin" "$stage/usr/lib/systemd/user" install -m 0755 "$root/build/linux-$arch/keeporg" "$stage/usr/bin/keeporg" install -m 0644 "$root/packaging/systemd/keeporg.service" \ "$stage/usr/lib/systemd/user/keeporg.service" ;; server) pkg=keeporgd binary=keeporgd mkdir -p "$stage/usr/bin" "$stage/usr/lib/systemd/system" "$stage/etc/keeporg" install -m 0755 "$root/build/linux-$arch/keeporgd" "$stage/usr/bin/keeporgd" install -m 0644 "$root/packaging/systemd/keeporgd.service" \ "$stage/usr/lib/systemd/system/keeporgd.service" "$root/build/linux-$arch/keeporgd" -write-config "$stage/etc/keeporg/server.json" >/dev/null chmod 0640 "$stage/etc/keeporg/server.json" ;; *) echo "build-deb.sh: unknown package kind $kind" >&2 exit 2 ;; esac mkdir -p "$stage/DEBIAN" "$stage/usr/share/doc/$pkg" sed -e "s/@VERSION@/$version/" -e "s/@ARCH@/$arch/" \ "$root/packaging/deb/$kind/control.in" > "$stage/DEBIAN/control" install -m 0644 "$root/packaging/deb/copyright" "$stage/usr/share/doc/$pkg/copyright" gzip -9nc "$root/packaging/deb/changelog" > "$stage/usr/share/doc/$pkg/changelog.Debian.gz" chmod 0644 "$stage/usr/share/doc/$pkg/changelog.Debian.gz" if [ "$kind" = server ]; then cat > "$stage/DEBIAN/conffiles" <<'CONF' /etc/keeporg/server.json CONF cat > "$stage/DEBIAN/postinst" <<'POST' #!/bin/sh set -e if [ "$1" = configure ]; then if ! getent passwd keeporg >/dev/null; then adduser --system --group --home /var/lib/keeporg \ --gecos "KeepOrg synchronization server" keeporg fi install -d -o keeporg -g keeporg -m 0700 /var/lib/keeporg chgrp keeporg /etc/keeporg/server.json || true chmod 0640 /etc/keeporg/server.json || true if [ -d /run/systemd/system ]; then systemctl daemon-reload || true echo "keeporgd: edit /etc/keeporg/server.json, then" \ "systemctl enable --now keeporgd" >&2 fi fi exit 0 POST cat > "$stage/DEBIAN/prerm" <<'PRERM' #!/bin/sh set -e if [ "$1" = remove ] && [ -d /run/systemd/system ]; then systemctl stop keeporgd || true fi exit 0 PRERM chmod 0755 "$stage/DEBIAN/postinst" "$stage/DEBIAN/prerm" fi mkdir -p "$(dirname "$out")" fakeroot dpkg-deb --root-owner-group --build "$stage" "$out" >/dev/null printf 'built %s (%s %s %s)\n' "$out" "$binary" "$version" "$arch"