mirror of
https://github.com/lucannez64/darling-lol.git
synced 2026-10-26 19:47:42 +00:00
49 lines
2.3 KiB
Bash
Executable File
49 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# Bring an existing build and installation up to date after `git pull`: re-apply the patches that changed
|
|
# (prepare.py reverts the earlier version it finds applied), rebuild incrementally, and reinstall the base
|
|
# runtime, and the per-user overrides. Run it after manually closing Riot/League.
|
|
# Rootless callers must remain in their original namespace; the outer launcher
|
|
# refuses a live prefix marker instead of trying to reconnect or stop a session.
|
|
set -eu
|
|
repo=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
|
cd "$repo"
|
|
if [ -n "${DARLING_WORKSPACE:-}" ]; then
|
|
python3 scripts/nix-idle.py
|
|
# Initial setup and upgrades use the same supported user-owned install path.
|
|
# Keep each package closure rooted: copied ELF files can retain its loader.
|
|
package=${DARLING_PACKAGE_ID%/share/darling-lol}
|
|
case "$package" in /nix/store/*) ;; *) echo 'Missing Nix package identity' >&2; exit 1;; esac
|
|
mkdir -p build/nix-gcroots
|
|
nix-store --realise "$package" --add-root "$repo/build/nix-gcroots/$(basename "$package")" --indirect >/dev/null
|
|
python3 scripts/nix-state.py invalidate-base
|
|
./scripts/build.sh
|
|
python3 build/runtime/tools/stop-darling-runtime.py
|
|
cmake --install build/darling-src/build
|
|
python3 scripts/nix-state.py stamp-base
|
|
./scripts/install-runtime.sh
|
|
echo 'Rootless update installed. In this shell use scripts/run.sh; otherwise exit this shell and start darling-lol.'
|
|
exit 0
|
|
fi
|
|
if [ ! -d build/darling-src/build ]; then
|
|
echo 'No existing build; follow the first-time setup in README.md instead.' >&2
|
|
exit 1
|
|
fi
|
|
# The install steps shut Darling down and stop leftover Riot processes, so refuse rather than end a session.
|
|
python3 - <<'PY'
|
|
from pathlib import Path
|
|
for entry in Path('/proc').iterdir():
|
|
if not entry.name.isdigit():
|
|
continue
|
|
try:
|
|
command_line = (entry / 'cmdline').read_bytes()
|
|
except OSError:
|
|
continue
|
|
if b'/Riot Client.app/' in command_line or b'/League of Legends.app/' in command_line:
|
|
raise SystemExit('A Riot Client or League process is running; exit the game and both clients, then run this again.')
|
|
PY
|
|
./scripts/build.sh
|
|
python3 build/runtime/tools/stop-darling-runtime.py
|
|
sudo cmake --install build/darling-src/build
|
|
./scripts/install-runtime.sh
|
|
echo 'Update installed. Start Darling with: sh scripts/run.sh'
|