summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2026-08-18 18:56:21 +0800
committerSadeep Madurange <sadeep@asciimx.com>2026-08-19 07:04:43 +0800
commitf0de83242d511d6e6d79bd5fe1b19fbe0770c25e (patch)
treefa58f2e38938b174f3b8a363440cd3dbd5b1cbbd
parent2ab3377227359c46b835899de91d9526cf7d2044 (diff)
downloadlex-f0de83242d511d6e6d79bd5fe1b19fbe0770c25e.tar.gz
RC file, add create user and install rc to make.
-rw-r--r--Makefile52
-rw-r--r--README.txt9
-rw-r--r--lexd.rc16
3 files changed, 64 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index 4dec12f..4fb8a1e 100644
--- a/Makefile
+++ b/Makefile
@@ -4,12 +4,6 @@ CFLAGS = -march=native -O2 -std=c11 -Wall -Wextra
CXXFLAGS = -march=native -O2 -O2 -Wall -Wextra
INCLUDES = -I. -Ideps/include
-# Standard tools and target directory
-BINDIR = /usr/local/bin
-INSTALL = install
-INSTALL_PROGRAM = $(INSTALL) -m 755
-MKDIR_P = mkdir -p
-
LLAMA_TAG = b10107
LLAMA_URL = https://github.com/ggml-org/llama.cpp/archive/refs/tags/$(LLAMA_TAG).tar.gz
LLAMA_TAR = deps/llama-$(LLAMA_TAG).tar.gz
@@ -27,6 +21,19 @@ TARGET = lexd
SRC = llm.c main.c
OBJS = $(SRC:.c=.o)
+# Standard tools and target directory
+BINDIR = /usr/local/bin
+RCDIR = /etc/rc.d
+VARDIR = /var/$(TARGET)
+INSTALL = install
+INSTALL_PROGRAM = $(INSTALL) -m 755
+INSTALL_SCRIPT = $(INSTALL) -m 555
+MKDIR_P = mkdir -p
+
+# Service user configuration
+SERVICE_USER = _lexd
+SERVICE_GROUP = _lexd
+
.PHONY: all clean distclean
all: $(TARGET)
@@ -85,12 +92,37 @@ deps/lib/libllama.a deps/lib/libggml.a deps/lib/libggml-cpu.a:
@echo "===> Cleaning up build directory..."
rm -rf $(LLAMA_SRC_DIR)
-install: $(TARGET)
- $(MKDIR_P) $(DESTDIR)$(BINDIR)
- $(INSTALL_PROGRAM) $(TARGET) $(DESTDIR)$(BINDIR)/$(TARGET)
+install-user:
+ @if ! id -u $(SERVICE_USER) >/dev/null 2>&1; then \
+ echo "===> Creating service user..."; \
+ groupadd $(SERVICE_GROUP) 2>/dev/null || true; \
+ useradd -g $(SERVICE_GROUP) -s /sbin/nologin -d /var/empty -c "lexd daemon user" $(SERVICE_USER); \
+ fi
+
+install: $(TARGET) install-user
+ @$(MKDIR_P) $(BINDIR)
+ @echo "===> Installing executable to $(BINDIR)/$(TARGET)..."
+ @$(INSTALL_PROGRAM) $(TARGET) $(BINDIR)/$(TARGET)
+ @echo "===> Installing RC script to $(DESTDIR)$(RCDIR)/$(TARGET)..."
+ @$(MKDIR_P) $(RCDIR)
+ @$(INSTALL_SCRIPT) $(TARGET).rc $(RCDIR)/$(TARGET)
+ @echo "===> Creating data directory $(VARDIR)..."
+ @$(MKDIR_P) $(VARDIR)
+ @chown $(SERVICE_USER):$(SERVICE_GROUP) $(VARDIR)
+ @chmod 750 $(VARDIR)
+ @echo "===> Installation complete."
uninstall:
- rm -f $(DESTDIR)$(BINDIR)/$(TARGET)
+ @echo "===> Stopping service..."
+ @-rcctl stop $(TARGET) 2>/dev/null || true
+ @rm -f $(BINDIR)/$(TARGET)
+ @rm -f $(RCDIR)/$(TARGET)
+ @echo "Uninstall complete."
+ @echo "Note: The data directory and service accounts were preserved."
+ @echo "To remove all remaining data, run:"
+ @echo " # rm -rf $(VARDIR)"
+ @echo " # userdel $(SERVICE_USER)"
+ @echo " # groupdel $(SERVICE_GROUP)"
clean:
rm -f $(TARGET) $(OBJS)
diff --git a/README.txt b/README.txt
index 912ef47..2fcb172 100644
--- a/README.txt
+++ b/README.txt
@@ -1,5 +1,8 @@
USAGE
-Install: make install
-Start server: lexd -m <path to model>
-Connect to socket and type prompt: $ nc -U /var/run/lexd/sock
+1. Install: make install
+2. Set datasize-cur/datasize-max to 3G/4G for daemon class.
+3. Place model file in /var/lexd/model.gguf.
+4. Start service: rcctl start lexd
+5. Connect, type prompt, hit enter: nc -U /var/run/lexd/sock
+
diff --git a/lexd.rc b/lexd.rc
new file mode 100644
index 0000000..7069005
--- /dev/null
+++ b/lexd.rc
@@ -0,0 +1,16 @@
+#!/bin/ksh
+
+daemon="/usr/local/bin/lexd"
+daemon_flags="-m /var/lexd/model.gguf"
+daemon_user="_lexd"
+
+. /etc/rc.d/rc.subr
+
+rc_bg=YES
+rc_reload=NO
+
+rc_pre() {
+ /usr/bin/install -d -o _lexd -g _lexd -m 0755 /var/run/lexd
+}
+
+rc_cmd $1