106 lines
3.7 KiB
Bash
Executable File
106 lines
3.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build a tar.gz updater bundle that adds native Secure Chat to an existing BackOneUI install.
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
BACKONE_REPO="${BACKONE_REPO:-$ROOT/../BackOne}"
|
|
PKG_TEMPLATE="${ROOT}/pkg/linux/secure-chat-updater"
|
|
DEPROOT="${BACKONE_UI_DEPROOT:-$HOME/backone-ui-build-deps}"
|
|
BUILD_PROFILE="${BUILD_PROFILE:-release}"
|
|
ARCH="$(uname -m)"
|
|
OUT_DIR="${ROOT}/build/linux-updater-bundles"
|
|
|
|
case "$ARCH" in
|
|
x86_64) ARCH_TAG="amd64" ;;
|
|
aarch64) ARCH_TAG="arm64" ;;
|
|
*) ARCH_TAG="$ARCH" ;;
|
|
esac
|
|
|
|
VERSION="$(grep '^version' "${ROOT}/Cargo.toml" | head -1 | sed 's/.*"\(.*\)".*/\1/')"
|
|
BUNDLE_NAME="backone-ui-secure-chat-updater-${VERSION}-linux-${ARCH_TAG}"
|
|
STAGE="${OUT_DIR}/${BUNDLE_NAME}"
|
|
|
|
echo "==> Building BackOneUI (${BUILD_PROFILE}) with Secure Chat..."
|
|
export PKG_CONFIG_PATH="${DEPROOT}/usr/lib/x86_64-linux-gnu/pkgconfig:${PKG_CONFIG_PATH:-}"
|
|
export PKG_CONFIG_SYSROOT_DIR="$DEPROOT"
|
|
export LD_LIBRARY_PATH="${DEPROOT}/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH:-}"
|
|
|
|
if [[ -x "${ROOT}/scripts/linux-build.sh" ]]; then
|
|
bash "${ROOT}/scripts/linux-build.sh" --"${BUILD_PROFILE}"
|
|
else
|
|
cd "${ROOT}"
|
|
cargo build --"${BUILD_PROFILE}"
|
|
fi
|
|
|
|
BIN_SRC="${ROOT}/target/${BUILD_PROFILE}/backone_desktop_ui"
|
|
if [[ ! -x "$BIN_SRC" ]]; then
|
|
echo "Binary not found: $BIN_SRC" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "==> Staging bundle ${BUNDLE_NAME}..."
|
|
rm -rf "$STAGE"
|
|
mkdir -p "$STAGE/usr/bin" "$STAGE/usr/share/applications" "$STAGE/usr/share/backone" "$STAGE/extras"
|
|
|
|
cp -a "${PKG_TEMPLATE}/manifest.json" "$STAGE/"
|
|
cp -a "${PKG_TEMPLATE}/install.sh" "$STAGE/"
|
|
chmod 755 "$STAGE/install.sh"
|
|
|
|
cp -a "$BIN_SRC" "$STAGE/usr/bin/backone_desktop_ui"
|
|
cp -a "${PKG_TEMPLATE}/usr/share/backone/backone-ui.env" "$STAGE/usr/share/backone/"
|
|
cp -a "${ROOT}/backone-ui.desktop" "$STAGE/usr/share/applications/backone-ui.desktop"
|
|
|
|
# Ship web secure-chat addon from local tree or sibling BackOne repo.
|
|
ADDON_SRC=""
|
|
if [[ -d "${ROOT}/addons/secure-chat" ]]; then
|
|
ADDON_SRC="${ROOT}/addons/secure-chat"
|
|
elif [[ -d "${BACKONE_REPO}/addons/secure-chat" ]]; then
|
|
ADDON_SRC="${BACKONE_REPO}/addons/secure-chat"
|
|
fi
|
|
if [[ -n "$ADDON_SRC" ]]; then
|
|
mkdir -p "$STAGE/opt/backone-addon-secure-chat"
|
|
cp -a "${ADDON_SRC}/addon.json" \
|
|
"$STAGE/opt/backone-addon-secure-chat/"
|
|
cp -a "${ADDON_SRC}/frontend/index.js" \
|
|
"$STAGE/opt/backone-addon-secure-chat/"
|
|
cat > "$STAGE/extras/install-web-secure-chat-addon.sh" <<'EOS'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
BUNDLE_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
ADDON_SRC="${BUNDLE_DIR}/opt/backone-addon-secure-chat"
|
|
if [[ "${EUID}" -ne 0 ]]; then
|
|
echo "Run with sudo" >&2
|
|
exit 1
|
|
fi
|
|
mkdir -p /usr/lib/backone/addons/secure-chat
|
|
mkdir -p /var/lib/backone/app/addons/secure-chat
|
|
cp "${ADDON_SRC}/addon.json" /usr/lib/backone/addons/secure-chat/
|
|
cp "${ADDON_SRC}/index.js" /var/lib/backone/app/addons/secure-chat/
|
|
if [[ -x /usr/lib/backone/addons/updater/backone-updater ]]; then
|
|
/usr/lib/backone/addons/updater/backone-updater rebuild-manifest
|
|
fi
|
|
echo "Installed backone-addon-secure-chat files for the web app-shell."
|
|
EOS
|
|
chmod 755 "$STAGE/extras/install-web-secure-chat-addon.sh"
|
|
fi
|
|
|
|
if [[ -x "${ROOT}/scripts/linux-setup-backone-access.sh" ]]; then
|
|
cp -a "${ROOT}/scripts/linux-setup-backone-access.sh" "$STAGE/extras/setup-webhub.sh"
|
|
fi
|
|
|
|
# Patch manifest version from Cargo.toml
|
|
sed -i "s/\"version\": \"[^\"]*\"/\"version\": \"${VERSION}\"/" "$STAGE/manifest.json"
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
TARBALL="${OUT_DIR}/${BUNDLE_NAME}.tar.gz"
|
|
tar -C "$OUT_DIR" -czf "$TARBALL" "$BUNDLE_NAME"
|
|
|
|
echo ""
|
|
echo "Built updater bundle:"
|
|
echo " ${TARBALL}"
|
|
echo ""
|
|
echo "Install on target system:"
|
|
echo " tar -xzf ${BUNDLE_NAME}.tar.gz"
|
|
echo " cd ${BUNDLE_NAME}"
|
|
echo " sudo ./install.sh"
|