Skip to content

Commit bbcc873

Browse files
author
Paul C
committed
v7.8.3: Auto-upgrade WolfNet during setup.sh
- setup.sh now checks if WolfNet has updates available when already installed - Compares local git HEAD against origin/main for the WolfScale repo - If newer code exists: pulls, rebuilds, replaces binary, restarts service - Works for both running and stopped WolfNet states
1 parent 6243927 commit bbcc873

2 files changed

Lines changed: 80 additions & 3 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "wolfstack"
3-
version = "7.8.2"
3+
version = "7.8.3"
44
edition = "2021"
55
authors = ["Wolf Software Systems Ltd"]
66
description = "Server management platform for the Wolf software suite"

setup.sh

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,16 +175,93 @@ echo ""
175175
echo "Checking WolfNet (cluster networking)..."
176176

177177
if command -v wolfnet &> /dev/null && systemctl is-active --quiet wolfnet 2>/dev/null; then
178-
# Already installed and running — nothing to do
178+
# Already installed and running — check for upgrades
179179
echo "✓ WolfNet already installed and running"
180180
WOLFNET_IP=$(ip -4 addr show wolfnet0 2>/dev/null | awk '/inet / {split($2,a,"/"); print a[1]}' || echo "")
181181
if [ -n "$WOLFNET_IP" ]; then
182182
echo " WolfNet IP: $WOLFNET_IP"
183183
fi
184184

185+
# Check if WolfNet needs an upgrade
186+
WOLFNET_SRC_DIR="/opt/wolfnet-src"
187+
if [ -d "$WOLFNET_SRC_DIR" ]; then
188+
echo " Checking for WolfNet updates..."
189+
cd "$WOLFNET_SRC_DIR"
190+
git fetch origin 2>/dev/null || true
191+
LOCAL_HASH=$(git rev-parse HEAD 2>/dev/null || echo "unknown")
192+
REMOTE_HASH=$(git rev-parse origin/main 2>/dev/null || echo "unknown")
193+
if [ "$LOCAL_HASH" != "$REMOTE_HASH" ] && [ "$REMOTE_HASH" != "unknown" ]; then
194+
echo " ⚡ WolfNet update available — upgrading..."
195+
git reset --hard origin/main
196+
197+
# Ensure Rust is available
198+
export PATH="$REAL_HOME/.cargo/bin:/usr/local/bin:/usr/bin:$PATH"
199+
if command -v cargo &> /dev/null; then
200+
cd "$WOLFNET_SRC_DIR/wolfnet"
201+
if [ "$REAL_USER" != "root" ] && [ -f "$REAL_HOME/.cargo/bin/cargo" ]; then
202+
chown -R "$REAL_USER:$REAL_USER" "$WOLFNET_SRC_DIR"
203+
su - "$REAL_USER" -c "cd $WOLFNET_SRC_DIR/wolfnet && $REAL_HOME/.cargo/bin/cargo build --release"
204+
else
205+
cargo build --release
206+
fi
207+
208+
# Install updated binaries
209+
systemctl stop wolfnet 2>/dev/null || true
210+
cp "$WOLFNET_SRC_DIR/wolfnet/target/release/wolfnet" /usr/local/bin/wolfnet
211+
chmod +x /usr/local/bin/wolfnet
212+
if [ -f "$WOLFNET_SRC_DIR/wolfnet/target/release/wolfnetctl" ]; then
213+
cp "$WOLFNET_SRC_DIR/wolfnet/target/release/wolfnetctl" /usr/local/bin/wolfnetctl
214+
chmod +x /usr/local/bin/wolfnetctl
215+
fi
216+
systemctl start wolfnet 2>/dev/null || true
217+
echo " ✓ WolfNet upgraded and restarted"
218+
else
219+
echo " ⚠ Cargo not found — skipping WolfNet rebuild"
220+
fi
221+
else
222+
echo " ✓ WolfNet is up to date"
223+
fi
224+
fi
225+
185226
elif command -v wolfnet &> /dev/null; then
186-
# Installed but not running — just start it
227+
# Installed but not running — check for upgrades, then start
187228
echo "✓ WolfNet installed (not running)"
229+
230+
# Check for upgrades first
231+
WOLFNET_SRC_DIR="/opt/wolfnet-src"
232+
if [ -d "$WOLFNET_SRC_DIR" ]; then
233+
echo " Checking for WolfNet updates..."
234+
cd "$WOLFNET_SRC_DIR"
235+
git fetch origin 2>/dev/null || true
236+
LOCAL_HASH=$(git rev-parse HEAD 2>/dev/null || echo "unknown")
237+
REMOTE_HASH=$(git rev-parse origin/main 2>/dev/null || echo "unknown")
238+
if [ "$LOCAL_HASH" != "$REMOTE_HASH" ] && [ "$REMOTE_HASH" != "unknown" ]; then
239+
echo " ⚡ WolfNet update available — upgrading..."
240+
git reset --hard origin/main
241+
export PATH="$REAL_HOME/.cargo/bin:/usr/local/bin:/usr/bin:$PATH"
242+
if command -v cargo &> /dev/null; then
243+
cd "$WOLFNET_SRC_DIR/wolfnet"
244+
if [ "$REAL_USER" != "root" ] && [ -f "$REAL_HOME/.cargo/bin/cargo" ]; then
245+
chown -R "$REAL_USER:$REAL_USER" "$WOLFNET_SRC_DIR"
246+
su - "$REAL_USER" -c "cd $WOLFNET_SRC_DIR/wolfnet && $REAL_HOME/.cargo/bin/cargo build --release"
247+
else
248+
cargo build --release
249+
fi
250+
cp "$WOLFNET_SRC_DIR/wolfnet/target/release/wolfnet" /usr/local/bin/wolfnet
251+
chmod +x /usr/local/bin/wolfnet
252+
if [ -f "$WOLFNET_SRC_DIR/wolfnet/target/release/wolfnetctl" ]; then
253+
cp "$WOLFNET_SRC_DIR/wolfnet/target/release/wolfnetctl" /usr/local/bin/wolfnetctl
254+
chmod +x /usr/local/bin/wolfnetctl
255+
fi
256+
echo " ✓ WolfNet upgraded"
257+
else
258+
echo " ⚠ Cargo not found — skipping WolfNet rebuild"
259+
fi
260+
else
261+
echo " ✓ WolfNet is up to date"
262+
fi
263+
fi
264+
188265
echo " Starting WolfNet..."
189266
systemctl start wolfnet 2>/dev/null || true
190267
sleep 2

0 commit comments

Comments
 (0)