60 lines
2.2 KiB
Bash
Executable file
60 lines
2.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: MIT
|
|
# Viet+ — Generic Linux Tarball Packager
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
VERSION=$(grep '^version' "$PROJECT_ROOT/engine/Cargo.toml" | head -1 | sed 's/.*"\(.*\)"/\1/')
|
|
|
|
PACKAGE_NAME="vietc_${VERSION}_linux_amd64"
|
|
DIST_DIR="$PROJECT_ROOT/target/dist"
|
|
STAGING="$DIST_DIR/$PACKAGE_NAME"
|
|
|
|
echo "=== Building Viet+ release tarball v${VERSION} ==="
|
|
|
|
# 1. Compile all components
|
|
echo "[1/4] Compiling components in release mode..."
|
|
cargo build --release --manifest-path "$PROJECT_ROOT/Cargo.toml"
|
|
(cd "$PROJECT_ROOT/ui" && cargo build --release)
|
|
gcc -O2 -o "$PROJECT_ROOT/target/release/vietc-xrecord" "$PROJECT_ROOT/packaging/deb/vietc-xrecord.c" -lX11 -lXtst
|
|
|
|
# 2. Recreate staging directory
|
|
echo "[2/4] Assembling package structure..."
|
|
rm -rf "$DIST_DIR"
|
|
mkdir -p "$STAGING/bin"
|
|
mkdir -p "$STAGING/udev"
|
|
mkdir -p "$STAGING/desktop"
|
|
mkdir -p "$STAGING/icons"
|
|
mkdir -p "$STAGING/config"
|
|
|
|
# 3. Copy binaries & rename vietc -> vietc-daemon
|
|
cp "$PROJECT_ROOT/target/release/vietc" "$STAGING/bin/vietc-daemon"
|
|
cp "$PROJECT_ROOT/target/release/vietc-cli" "$STAGING/bin/"
|
|
cp "$PROJECT_ROOT/target/release/vietc-uinputd" "$STAGING/bin/"
|
|
cp "$PROJECT_ROOT/ui/target/release/vietc-tray" "$STAGING/bin/"
|
|
cp "$PROJECT_ROOT/target/release/vietc-xrecord" "$STAGING/bin/"
|
|
|
|
# 4. Copy assets & support files
|
|
cp "$PROJECT_ROOT/packaging/99-vietc.rules" "$STAGING/udev/"
|
|
cp "$PROJECT_ROOT/packaging/deb/vietc.desktop" "$STAGING/desktop/"
|
|
cp "$PROJECT_ROOT/vietc.toml" "$STAGING/config/config.toml"
|
|
cp "$PROJECT_ROOT/packaging/icons/vietc.svg" "$STAGING/icons/"
|
|
cp "$PROJECT_ROOT/packaging/icons/vietc-vn.svg" "$STAGING/icons/"
|
|
cp "$PROJECT_ROOT/packaging/icons/vietc-en.svg" "$STAGING/icons/"
|
|
|
|
cp "$PROJECT_ROOT/install.sh" "$STAGING/"
|
|
chmod +x "$STAGING/install.sh"
|
|
|
|
cp "$PROJECT_ROOT/README.md" "$STAGING/"
|
|
cp "$PROJECT_ROOT/LICENSE" "$STAGING/"
|
|
|
|
# 5. Compress
|
|
echo "[3/4] Creating tarball archive..."
|
|
(cd "$DIST_DIR" && tar -czf "${PACKAGE_NAME}.tar.gz" "$PACKAGE_NAME")
|
|
|
|
# 6. Cleanup temp staging
|
|
rm -rf "$STAGING"
|
|
|
|
echo -e "\n=== Package successfully built: ==="
|
|
echo "target/dist/${PACKAGE_NAME}.tar.gz"
|