summaryrefslogtreecommitdiffstats
path: root/Makefile
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 /Makefile
parent2ab3377227359c46b835899de91d9526cf7d2044 (diff)
downloadlex-f0de83242d511d6e6d79bd5fe1b19fbe0770c25e.tar.gz
RC file, add create user and install rc to make.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile52
1 files changed, 42 insertions, 10 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)