Basic scripts to build from source and run install. Nothing fancy.

This commit is contained in:
BeigeBox
2026-02-07 15:00:15 -08:00
committed by Cooper Quintin
parent 836ec2169d
commit 715efc4b0d
4 changed files with 125 additions and 0 deletions

1
.gitattributes vendored
View File

@@ -7,3 +7,4 @@
dist/config.toml.in eol=lf
dist/scripts/misc-daemon eol=lf
dist/scripts/rayhunter_daemon eol=lf
scripts/*.sh eol=lf

View File

@@ -12,6 +12,17 @@ At a high level, we have:
It's recommended to work either on Mac/Linux, or WSL on Windows.
## Quick start
If you have [Rust](https://www.rust-lang.org/tools/install) and
[Node.js/npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
installed, you can build everything with:
```sh
./scripts/build-dev.sh
./scripts/install-dev.sh orbic # replace 'orbic' with your device type
```
## Step 1: Building the frontend
Install [nodejs/npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm), which is required to build Rayhunter's web UI.

89
scripts/build-dev.sh Executable file
View File

@@ -0,0 +1,89 @@
#!/bin/bash
# Build Rayhunter from source for development.
# Prerequisites: Rust (rustup) and Node.js (npm).
#
# Usage: ./scripts/build-dev.sh [build|frontend|check]
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_DIR"
check_dependencies() {
local missing=0
if ! command -v cargo &> /dev/null; then
echo "Error: cargo not found. Install Rust via https://www.rust-lang.org/tools/install"
missing=1
fi
if ! command -v npm &> /dev/null; then
echo "Error: npm not found. Install Node.js via https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"
missing=1
fi
if [ "$missing" -eq 1 ]; then
exit 1
fi
# Ensure the ARM cross-compilation target is installed
if ! rustup target list --installed | grep -q "armv7-unknown-linux-musleabihf"; then
echo "Installing ARM target (armv7-unknown-linux-musleabihf)..."
rustup target add armv7-unknown-linux-musleabihf
fi
echo "All dependencies found."
}
build_frontend() {
echo "Building web frontend..."
pushd daemon/web > /dev/null
npm install
npm run build
popd > /dev/null
}
build_daemon() {
echo "Building daemon..."
cargo build-daemon-firmware-devel
echo "Building rootshell..."
cargo build-rootshell-firmware-devel
}
COMMAND="${1:-build}"
case "$COMMAND" in
build)
check_dependencies
build_frontend
build_daemon
echo ""
echo "Build complete! To install to a device, run:"
echo " FIRMWARE_PROFILE=firmware-devel cargo run -p installer --bin installer <device>"
echo ""
echo "Replace <device> with your device type (e.g. orbic, tplink)."
echo "Run 'cargo run --bin installer help' for a list of supported devices."
;;
frontend)
build_frontend
;;
check)
check_dependencies
;;
help|--help|-h)
echo "Usage: $0 [command]"
echo ""
echo "Commands:"
echo " build Build frontend, daemon, and rootshell (default)"
echo " frontend Build only the web frontend"
echo " check Check dependencies only"
;;
*)
echo "Unknown command: $COMMAND"
echo "Run '$0 help' for usage."
exit 1
;;
esac

24
scripts/install-dev.sh Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
# Install a development build of Rayhunter to a device.
# Run ./scripts/build-dev.sh first.
#
# Usage: ./scripts/install-dev.sh <device>
# Example: ./scripts/install-dev.sh orbic
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_DIR"
DEVICE="${1:-}"
if [ -z "$DEVICE" ]; then
echo "Usage: $0 <device>"
echo ""
echo "Run 'cargo run --bin installer help' for a list of supported devices."
exit 1
fi
FIRMWARE_PROFILE=firmware-devel cargo run -p installer --bin installer -- "$DEVICE"