291 lines
13 KiB
Makefile
291 lines
13 KiB
Makefile
# Ollie monorepo build system
|
|
#
|
|
# Two variants:
|
|
# just Default (KF6): core, 9p, kde, emacs
|
|
# just kf5 KF5/Qt5 variant (Plasma 5.27)
|
|
#
|
|
# Build and install are separate phases. No sudo.
|
|
|
|
set dotenv-load := false
|
|
|
|
home := env_var('HOME')
|
|
cfg := home / ".config/ollie"
|
|
bin := home / ".local/bin"
|
|
lib := home / ".local/lib"
|
|
inc := home / ".local/include"
|
|
|
|
# === Default (KF6) path ===
|
|
default: build install
|
|
|
|
# === KF5 variant ===
|
|
kf5: build-kf5 install-kf5
|
|
|
|
# === Build targets ===
|
|
|
|
build: core ninep lib9p toolsrv lsp-tools kde
|
|
|
|
build-kf5: core ninep lib9p toolsrv kde-kf5
|
|
|
|
core:
|
|
@echo === Building ollie-core ===
|
|
go build ./agent/... ./backend/... ./bypass/... ./env/... ./fs/... ./log/... ./paths/... ./prompts/... ./sandbox/... ./session/... ./tools/lsp/... ./toolsrv/...
|
|
|
|
ninep:
|
|
@echo === Building ollie-9p ===
|
|
go build -o {{bin}}/olliesrv ./cmd/olliesrv/
|
|
go build -o {{bin}}/ollie-9p ./cmd/ollie-9p/
|
|
|
|
lib9p:
|
|
@echo === Building lib9p ===
|
|
cd lib9p && go build -buildmode=c-shared -o libollie9p.so
|
|
mkdir -p {{lib}} {{inc}}
|
|
install -m755 lib9p/libollie9p.so {{lib}}/libollie9p.so
|
|
install -m644 lib9p/libollie9p.h {{inc}}/libollie9p.h
|
|
|
|
lsp-tools:
|
|
@echo === Building LSP tools ===
|
|
mkdir -p {{cfg}}/tools
|
|
rm -f {{cfg}}/tools/lsp_definition {{cfg}}/tools/lsp_references {{cfg}}/tools/lsp_hover {{cfg}}/tools/lsp_rename {{cfg}}/tools/lsp_symbols {{cfg}}/tools/lsp_completion {{cfg}}/tools/lsp_diagnostics
|
|
go build -o {{cfg}}/tools/lsp_definition ./tools/lsp/cmd/lsp_definition/
|
|
install -m644 ./tools/lsp/cmd/lsp_definition/lsp_definition.meta {{cfg}}/tools/lsp_definition.meta
|
|
go build -o {{cfg}}/tools/lsp_references ./tools/lsp/cmd/lsp_references/
|
|
install -m644 ./tools/lsp/cmd/lsp_references/lsp_references.meta {{cfg}}/tools/lsp_references.meta
|
|
go build -o {{cfg}}/tools/lsp_hover ./tools/lsp/cmd/lsp_hover/
|
|
install -m644 ./tools/lsp/cmd/lsp_hover/lsp_hover.meta {{cfg}}/tools/lsp_hover.meta
|
|
go build -o {{cfg}}/tools/lsp_rename ./tools/lsp/cmd/lsp_rename/
|
|
install -m644 ./tools/lsp/cmd/lsp_rename/lsp_rename.meta {{cfg}}/tools/lsp_rename.meta
|
|
go build -o {{cfg}}/tools/lsp_symbols ./tools/lsp/cmd/lsp_symbols/
|
|
install -m644 ./tools/lsp/cmd/lsp_symbols/lsp_symbols.meta {{cfg}}/tools/lsp_symbols.meta
|
|
go build -o {{cfg}}/tools/lsp_completion ./tools/lsp/cmd/lsp_completion/
|
|
install -m644 ./tools/lsp/cmd/lsp_completion/lsp_completion.meta {{cfg}}/tools/lsp_completion.meta
|
|
go build -o {{cfg}}/tools/lsp_diagnostics ./tools/lsp/cmd/lsp_diagnostics/
|
|
install -m644 ./tools/lsp/cmd/lsp_diagnostics/lsp_diagnostics.meta {{cfg}}/tools/lsp_diagnostics.meta
|
|
|
|
toolsrv:
|
|
@echo === Building toolsrv ===
|
|
go build -buildvcs=false -o {{bin}}/toolsrv ./cmd/toolsrv/
|
|
|
|
kde:
|
|
@echo === Building ollie-kde ===
|
|
just -f kde/justfile kde
|
|
|
|
kde-kf5:
|
|
@echo '=== Building ollie-kde (KF5) ==='
|
|
just -f kde/justfile kde-kf5
|
|
|
|
install: test install-data install-el migrate-bin
|
|
just -f kde/justfile install-kde
|
|
@echo === Install complete ===
|
|
@echo 'Restart Plasma to pick up KDE plugins.'
|
|
|
|
install-kf5: test install-data install-el migrate-bin
|
|
just -f kde/justfile install-kde-kf5
|
|
@echo '=== Install complete (KF5) ==='
|
|
@echo 'Restart Plasma to pick up KDE plugins.'
|
|
|
|
install-el:
|
|
@echo === Installing ellie.el ===
|
|
mkdir -p ~/.config/emacs/ellie
|
|
install -m644 contrib/elisp/ellie.el ~/.config/emacs/ellie/ellie.el
|
|
|
|
# Remove stale binaries from ~/bin left over from the pre-~/.local/bin era.
|
|
migrate-bin:
|
|
#!/usr/bin/env sh
|
|
old="$HOME/bin"
|
|
for f in olliesrv ollie-9p ollie-remote toolsrv ollie-gui ollie-remount logseq-cli o; do
|
|
if [ -f "$old/$f" ]; then
|
|
echo " removing stale $old/$f"
|
|
rm -f "$old/$f"
|
|
fi
|
|
done
|
|
|
|
install-data:
|
|
@echo === Installing data ===
|
|
# Backend config (only install template if user hasn't created one yet)
|
|
@test -f {{cfg}}/backends.conf || install -m600 data/backends.conf {{cfg}}/backends.conf
|
|
# Agents
|
|
mkdir -p {{cfg}}/agents
|
|
install -m644 data/agents/copilot.json {{cfg}}/agents/copilot.json
|
|
install -m644 data/agents/default.json {{cfg}}/agents/default.json
|
|
install -m644 data/agents/explorer.json {{cfg}}/agents/explorer.json
|
|
install -m644 data/agents/librarian.json {{cfg}}/agents/librarian.json
|
|
install -m644 data/agents/navigator.json {{cfg}}/agents/navigator.json
|
|
install -m644 data/agents/driver.json {{cfg}}/agents/driver.json
|
|
install -m644 data/agents/README.md {{cfg}}/agents/README.md
|
|
install -m644 data/agents/taskmanager.json {{cfg}}/agents/taskmanager.json
|
|
install -m644 data/agents/theo.json {{cfg}}/agents/theo.json
|
|
# Prompts
|
|
mkdir -p {{cfg}}/prompts
|
|
mkdir -p {{cfg}}/memory
|
|
install -m644 data/prompts/agent-coding.md {{cfg}}/prompts/agent-coding.md
|
|
install -m644 data/prompts/agent-copilot.md {{cfg}}/prompts/agent-copilot.md
|
|
install -m644 data/prompts/agent-explorer.md {{cfg}}/prompts/agent-explorer.md
|
|
install -m644 data/prompts/agent-librarian.md {{cfg}}/prompts/agent-librarian.md
|
|
install -m644 data/prompts/agent-navigator.md {{cfg}}/prompts/agent-navigator.md
|
|
install -m644 data/prompts/agent-taskmanager.md {{cfg}}/prompts/agent-taskmanager.md
|
|
install -m644 data/prompts/agent-theo.md {{cfg}}/prompts/agent-theo.md
|
|
install -m644 data/prompts/user-preferences.md {{cfg}}/prompts/user-preferences.md
|
|
# Sandbox
|
|
mkdir -p {{cfg}}/sandbox
|
|
install -m644 sandbox/default.yaml {{cfg}}/sandbox/default.yaml
|
|
install -m644 sandbox/restricted.yaml {{cfg}}/sandbox/restricted.yaml
|
|
# Skills
|
|
mkdir -p {{cfg}}/skills/acme-api {{cfg}}/skills/agent-kb {{cfg}}/skills/duckduckgo-search {{cfg}}/skills/github-cli {{cfg}}/skills/rc-shell \
|
|
{{cfg}}/skills/web-dev-browser-screencapture {{cfg}}/skills/write-skills
|
|
install -m644 data/skills/LICENSE.md {{cfg}}/skills/LICENSE.md
|
|
install -m644 data/skills/README.md {{cfg}}/skills/README.md
|
|
install -m644 data/skills/acme-api/SKILL.md {{cfg}}/skills/acme-api/SKILL.md
|
|
install -m644 data/skills/agent-kb/SKILL.md {{cfg}}/skills/agent-kb/SKILL.md
|
|
install -m644 data/skills/duckduckgo-search/SKILL.md {{cfg}}/skills/duckduckgo-search/SKILL.md
|
|
install -m644 data/skills/github-cli/SKILL.md {{cfg}}/skills/github-cli/SKILL.md
|
|
install -m644 data/skills/rc-shell/SKILL.md {{cfg}}/skills/rc-shell/SKILL.md
|
|
install -m644 data/skills/web-dev-browser-screencapture/SKILL.md {{cfg}}/skills/web-dev-browser-screencapture/SKILL.md
|
|
install -m644 data/skills/write-skills/SKILL.md {{cfg}}/skills/write-skills/SKILL.md
|
|
# Tools (executables)
|
|
mkdir -p {{cfg}}/tools/_lib
|
|
install -m755 data/tools/browser_screencap {{cfg}}/tools/browser_screencap
|
|
install -m755 data/tools/reasoning_think {{cfg}}/tools/reasoning_think
|
|
install -m755 data/tools/shell {{cfg}}/tools/shell
|
|
install -m755 data/tools/file_edit {{cfg}}/tools/file_edit
|
|
install -m755 data/tools/file_glob {{cfg}}/tools/file_glob
|
|
install -m755 data/tools/file_grep {{cfg}}/tools/file_grep
|
|
install -m755 data/tools/file_read {{cfg}}/tools/file_read
|
|
install -m755 data/tools/file_write {{cfg}}/tools/file_write
|
|
install -m755 data/tools/gui_accessibility {{cfg}}/tools/gui_accessibility
|
|
install -m755 data/tools/gui_activities {{cfg}}/tools/gui_activities
|
|
install -m755 data/tools/gui_apps {{cfg}}/tools/gui_apps
|
|
install -m755 data/tools/gui_brightness {{cfg}}/tools/gui_brightness
|
|
install -m755 data/tools/gui_clipboard {{cfg}}/tools/gui_clipboard
|
|
install -m755 data/tools/gui_files {{cfg}}/tools/gui_files
|
|
install -m755 data/tools/gui_input {{cfg}}/tools/gui_input
|
|
install -m755 data/tools/gui_media {{cfg}}/tools/gui_media
|
|
install -m755 data/tools/gui_notify {{cfg}}/tools/gui_notify
|
|
install -m755 data/tools/gui_screenshot {{cfg}}/tools/gui_screenshot
|
|
install -m755 data/tools/gui_shortcuts {{cfg}}/tools/gui_shortcuts
|
|
install -m755 data/tools/gui_windows {{cfg}}/tools/gui_windows
|
|
install -m755 data/tools/image_read {{cfg}}/tools/image_read
|
|
install -m755 data/tools/memory_recall {{cfg}}/tools/memory_recall
|
|
install -m755 data/tools/memory_remember {{cfg}}/tools/memory_remember
|
|
install -m755 data/tools/process_dismiss {{cfg}}/tools/process_dismiss
|
|
install -m755 data/tools/process_list {{cfg}}/tools/process_list
|
|
install -m755 data/tools/process_output {{cfg}}/tools/process_output
|
|
install -m755 data/tools/process_signal {{cfg}}/tools/process_signal
|
|
install -m755 data/tools/subagent_generate {{cfg}}/tools/subagent_generate
|
|
install -m755 data/tools/subagent_spawn {{cfg}}/tools/subagent_spawn
|
|
install -m755 data/tools/logseq {{cfg}}/tools/logseq
|
|
install -m755 data/tools/skill_list {{cfg}}/tools/skill_list
|
|
install -m755 data/tools/skill_load {{cfg}}/tools/skill_load
|
|
install -m755 data/tools/system_logs_dmesg {{cfg}}/tools/system_logs_dmesg
|
|
install -m755 data/tools/system_logs_journald {{cfg}}/tools/system_logs_journald
|
|
# Tool metadata (.meta sidecar files)
|
|
for f in data/tools/*.meta; do install -m644 "$f" {{cfg}}/tools/"$(basename $f)"; done
|
|
# Tools (library modules)
|
|
install -m644 data/tools/_lib/__init__.py {{cfg}}/tools/_lib/__init__.py
|
|
install -m644 data/tools/_lib/args.py {{cfg}}/tools/_lib/args.py
|
|
install -m755 data/tools/_lib/args.sh {{cfg}}/tools/_lib/args.sh
|
|
# Scripts (ollie-remount, logseq-cli, o)
|
|
mkdir -p {{bin}}
|
|
install -m755 data/scripts/ollie-remount {{bin}}/ollie-remount
|
|
install -m755 data/scripts/logseq-cli {{bin}}/logseq-cli
|
|
install -m755 data/scripts/o {{bin}}/o
|
|
# Acme scripts
|
|
install -m755 data/scripts/acme/acme-ollie-ensure {{bin}}/acme-ollie-ensure
|
|
install -m755 data/scripts/acme/AskFile {{bin}}/AskFile
|
|
install -m755 data/scripts/acme/Explain {{bin}}/Explain
|
|
install -m755 data/scripts/acme/Document {{bin}}/Document
|
|
install -m755 data/scripts/acme/Fix {{bin}}/Fix
|
|
install -m755 data/scripts/acme/Refactor {{bin}}/Refactor
|
|
install -m755 data/scripts/acme/AddTests {{bin}}/AddTests
|
|
install -m755 data/scripts/acme/SendVerbatim {{bin}}/SendVerbatim
|
|
|
|
install-autostart:
|
|
@echo === Installing autostart files ===
|
|
mkdir -p ~/.config/autostart
|
|
install -m644 data/services/xdg-autostart/org.ollie.olliesrv.desktop ~/.config/autostart/
|
|
|
|
install-systemd:
|
|
@echo === Installing systemd service ===
|
|
mkdir -p ~/.config/systemd/user
|
|
install -m644 data/services/systemd/ollie.service ~/.config/systemd/user/
|
|
|
|
# === Uninstall ===
|
|
|
|
uninstall:
|
|
@echo === Uninstalling ollie ===
|
|
rm -f {{bin}}/Ollie {{bin}}/Kmpl {{bin}}/Oi {{bin}}/Theo
|
|
rm -f {{bin}}/ollie-remount {{bin}}/o
|
|
rm -f {{bin}}/prompt {{bin}}/ollieread {{bin}}/sendctl {{bin}}/ollie-ls
|
|
rm -f {{bin}}/AskFile {{bin}}/Explain {{bin}}/Document {{bin}}/Fix {{bin}}/Refactor {{bin}}/AddTests {{bin}}/SendVerbatim {{bin}}/acme-ollie-ensure
|
|
rm -rf {{cfg}}
|
|
# Service files
|
|
rm -f ~/.config/systemd/user/ollie.service
|
|
rm -f ~/.config/autostart/org.ollie.olliesrv.desktop
|
|
# KDE (KF6)
|
|
just -f kde/justfile uninstall
|
|
# Emacs
|
|
rm -rf ~/.config/emacs/ellie
|
|
# Plasma env
|
|
rm -f ~/.config/plasma-workspace/env/99-ollie.sh
|
|
@echo === Uninstall complete ===
|
|
|
|
uninstall-kf5:
|
|
@echo '=== Uninstalling ollie (KF5) ==='
|
|
rm -f {{bin}}/Ollie {{bin}}/Kmpl {{bin}}/Oi {{bin}}/Theo
|
|
rm -f {{bin}}/ollie-remount {{bin}}/o
|
|
rm -f {{bin}}/prompt {{bin}}/ollieread {{bin}}/sendctl {{bin}}/ollie-ls
|
|
rm -f {{bin}}/AskFile {{bin}}/Explain {{bin}}/Document {{bin}}/Fix {{bin}}/Refactor {{bin}}/AddTests {{bin}}/SendVerbatim {{bin}}/acme-ollie-ensure
|
|
rm -rf {{cfg}}
|
|
# Service files
|
|
rm -f ~/.config/systemd/user/ollie.service
|
|
rm -f ~/.config/autostart/org.ollie.olliesrv.desktop
|
|
# KDE (KF5)
|
|
just -f kde/justfile uninstall-kf5
|
|
# Emacs
|
|
rm -rf ~/.config/emacs/ellie
|
|
# Plasma env
|
|
rm -f ~/.config/plasma-workspace/env/99-ollie.sh
|
|
@echo '=== Uninstall complete (KF5) ==='
|
|
|
|
# === Test targets ===
|
|
|
|
test: test-core test-9p
|
|
|
|
test-core:
|
|
@echo === Testing ollie-core ===
|
|
go test ./agent/... ./backend/... ./bypass/... ./env/... ./log/... ./paths/... ./sandbox/... ./session/... ./toolsrv/... ./prompts/...
|
|
|
|
test-9p:
|
|
@echo === Testing ollie-9p ===
|
|
go test ./fs/...
|
|
|
|
test-remote:
|
|
@echo === Testing toolsrv ===
|
|
go build ./cmd/toolsrv/...
|
|
|
|
# === Clean ===
|
|
|
|
clean:
|
|
go clean ./agent/... ./backend/... 2>/dev/null || true
|
|
rm -f {{bin}}/Ollie {{bin}}/Kmpl {{bin}}/Oi {{bin}}/Theo
|
|
rm -f {{bin}}/ollie-remote
|
|
just -f kde/justfile clean
|
|
|
|
# === Help ===
|
|
|
|
help:
|
|
@echo 'Ollie monorepo build targets:'
|
|
@echo ' just Build + install (default, KF6)'
|
|
@echo ' just kf5 Build + install (KF5/Qt5, Plasma 5.27)'
|
|
@echo ' just build Build only (KF6): core, 9p, acme, kde'
|
|
@echo ' just build-kf5 Build only (KF5): core, 9p, acme, kde-kf5'
|
|
@echo ' just install Install (KF6)'
|
|
@echo ' just install-kf5 Install (KF5)'
|
|
@echo ' just test Run all tests (core + 9p)'
|
|
@echo ' just test-core Run core tests'
|
|
@echo ' just test-9p Run 9p tests'
|
|
@echo ' just uninstall Remove all installed files (KF6)'
|
|
@echo ' just uninstall-kf5 Remove all installed files (KF5)'
|
|
@echo ' just clean Clean build artifacts'
|
|
@echo ''
|
|
@echo 'Individual: just core | ninep | ollie-remote | acme | kde | kde-kf5 | lsp-tools'
|