blob: 45d2ab976cfdf74c79f677010118586f90221eaa (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#!/usr/bin/env bash
# Build the meshbay-hub package: hub-specific files on top of meshbay-common.
#
# Expects build-common.sh to have run first (shared venv exists in staging).
#
# Usage: ./build-hub.sh [staging-dir]
set -euo pipefail
REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
STAGING="${1:-/tmp/meshbay-build}"
COMMON_ROOT="$STAGING/meshbay-common-root"
ROOT="$STAGING/meshbay-hub-root"
VENV="$COMMON_ROOT/opt/meshbay-common/venv"
PYVER=$(basename "$VENV"/lib/python3.*)
SITE="$VENV/lib/$PYVER/site-packages"
VERSION=$(python3 -c "
import tomllib, pathlib
p = pathlib.Path('$REPO/packages/meshbay-hub/pyproject.toml')
print(tomllib.loads(p.read_text())['project']['version'])
")
echo "==> meshbay-hub $VERSION"
[ -d "$VENV" ] || { echo "!! shared venv not found — run build-common.sh first" >&2; exit 1; }
rm -rf "$ROOT"
mkdir -p "$ROOT"
# --- Hub code in the shared venv (owned by meshbay-hub package) -----------
# MOVE (not copy) from the common staging tree so dpkg/rpm knows these files
# belong to meshbay-hub, not meshbay-common. build-common.sh installed them
# so that shebangs and dependency resolution are correct.
HUB_ROOT="$ROOT/opt/meshbay-common/venv/lib/$PYVER/site-packages"
mkdir -p "$HUB_ROOT"
mv "$SITE/meshbay_hub" "$HUB_ROOT/"
mv "$SITE"/meshbay_hub-*.dist-info "$HUB_ROOT/"
# Entry point
mkdir -p "$ROOT/opt/meshbay-common/venv/bin"
mv "$VENV/bin/meshbay-hub" "$ROOT/opt/meshbay-common/venv/bin/"
# Symlink in PATH
mkdir -p "$ROOT/usr/bin"
ln -sf /opt/meshbay-common/venv/bin/meshbay-hub "$ROOT/usr/bin/meshbay-hub"
# --- Hub-specific assets --------------------------------------------------
mkdir -p "$ROOT/opt/meshbay-hub"
# Alembic config (migrations are inside the installed package at meshbay_hub/db/migrations/)
if [ -f "$REPO/packages/meshbay-hub/alembic.ini" ]; then
mkdir -p "$ROOT/opt/meshbay-hub/migrations"
cp "$REPO/packages/meshbay-hub/alembic.ini" "$ROOT/opt/meshbay-hub/migrations/"
fi
# Config example
mkdir -p "$ROOT/opt/meshbay-hub/share"
if [ -f "$REPO/packaging/conf/hub.toml.example" ]; then
cp "$REPO/packaging/conf/hub.toml.example" "$ROOT/opt/meshbay-hub/share/"
fi
# Also install to /etc/meshbay/ for discoverability
mkdir -p "$ROOT/etc/meshbay"
if [ -f "$ROOT/opt/meshbay-hub/share/hub.toml.example" ]; then
cp "$ROOT/opt/meshbay-hub/share/hub.toml.example" "$ROOT/etc/meshbay/"
fi
# --- Systemd unit ---------------------------------------------------------
mkdir -p "$ROOT/usr/lib/systemd/system"
cp "$REPO/packaging/systemd/meshbay-hub.service" \
"$ROOT/usr/lib/systemd/system/meshbay-hub.service"
echo "==> meshbay-hub staging ready at $ROOT"
|