105 lines
3.4 KiB
Makefile
105 lines
3.4 KiB
Makefile
# Makefile for Triton Server installation
|
|
# Builds Triton Server and copies artifacts only when necessary
|
|
|
|
CURRENT_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
|
TMP_SERVER := /tmp/server
|
|
BUILD_INSTALL := $(TMP_SERVER)/build/install
|
|
|
|
# Target directories
|
|
WHEELHOUSE_DIR := $(CURRENT_DIR)/wheelhouse
|
|
LIB_DIR := $(CURRENT_DIR)/lib
|
|
BIN_DIR := $(CURRENT_DIR)/bin
|
|
BACKEND_DIR := $(CURRENT_DIR)/backends
|
|
# Target files
|
|
TRITON_LIB := $(LIB_DIR)/libtritonserver.so
|
|
TRITON_BIN := $(BIN_DIR)/tritonserver
|
|
TRITON_WHEEL := $(WHEELHOUSE_DIR)/.wheel_marker
|
|
|
|
# Main target - build everything
|
|
.PHONY: all
|
|
all: $(TRITON_LIB) $(TRITON_BIN) $(TRITON_WHEEL) $(BACKEND_DIR)
|
|
@echo "Triton Server installation complete."
|
|
@echo "Add to your environment:"
|
|
@echo " export LD_LIBRARY_PATH=$(LIB_DIR):$(BACKEND_DIR):\$$LD_LIBRARY_PATH"
|
|
@echo " export PATH=$(BIN_DIR):\$$PATH"
|
|
|
|
# Clone the repository
|
|
$(TMP_SERVER):
|
|
@echo "Cloning Triton Server repository..."
|
|
cd /tmp && git clone https://github.com/triton-inference-server/server.git
|
|
|
|
# Build Triton Server
|
|
$(BUILD_INSTALL)/lib/libtritonserver.so $(BUILD_INSTALL)/bin/tritonserver: $(TMP_SERVER)
|
|
@echo "Building Triton Server (this may take a while)..."
|
|
cd $(TMP_SERVER) && \
|
|
uv venv .venv && \
|
|
. .venv/bin/activate && \
|
|
uv pip install distro requests && \
|
|
python3 build.py \
|
|
--enable-logging \
|
|
--enable-stats \
|
|
--enable-metrics \
|
|
--endpoint=http \
|
|
--backend=identity
|
|
|
|
# Copy library
|
|
$(TRITON_LIB): $(BUILD_INSTALL)/lib/libtritonserver.so
|
|
@echo "Copying libtriton.so..."
|
|
@mkdir -p $(LIB_DIR)
|
|
cp $(BUILD_INSTALL)/lib/libtritonserver.so $(LIB_DIR)/
|
|
|
|
# Copy binary
|
|
$(TRITON_BIN): $(BUILD_INSTALL)/bin/tritonserver
|
|
@echo "Copying tritonserver binary..."
|
|
@mkdir -p $(BIN_DIR)
|
|
cp $(BUILD_INSTALL)/bin/tritonserver $(BIN_DIR)/
|
|
|
|
# Copy backends
|
|
$(BACKEND_DIR): $(BUILD_INSTALL)/backends
|
|
@echo "Copying backends..."
|
|
@mkdir -p $(BACKEND_DIR)
|
|
cp -r $(BUILD_INSTALL)/backends/* $(BACKEND_DIR)/
|
|
|
|
# Copy wheels
|
|
$(TRITON_WHEEL): $(BUILD_INSTALL)/lib/libtritonserver.so
|
|
@echo "Copying Python wheels..."
|
|
@mkdir -p $(WHEELHOUSE_DIR)
|
|
cp $(BUILD_INSTALL)/python/*.whl $(WHEELHOUSE_DIR)/
|
|
@touch $(TRITON_WHEEL)
|
|
@echo "Triton Server wheel built successfully."
|
|
@ls -al $(WHEELHOUSE_DIR)
|
|
|
|
# Clean installed artifacts (keeps the build)
|
|
.PHONY: clean
|
|
clean:
|
|
@echo "Cleaning installed artifacts..."
|
|
rm -rf $(WHEELHOUSE_DIR) $(LIB_DIR) $(BIN_DIR)
|
|
|
|
# Full clean (removes everything including the cloned repo and build)
|
|
.PHONY: distclean
|
|
distclean: clean
|
|
@echo "Cleaning build directory..."
|
|
rm -rf $(TMP_SERVER)
|
|
|
|
# Show what would be built
|
|
.PHONY: status
|
|
status:
|
|
@echo "Installation status:"
|
|
@echo " Repository: $(if $(wildcard $(TMP_SERVER)),✓ cloned,✗ not cloned)"
|
|
@echo " Built: $(if $(wildcard $(BUILD_INSTALL)/lib/libtritonserver.so),✓ yes,✗ no)"
|
|
@echo " Library: $(if $(wildcard $(TRITON_LIB)),✓ installed,✗ not installed)"
|
|
@echo " Binary: $(if $(wildcard $(TRITON_BIN)),✓ installed,✗ not installed)"
|
|
@echo " Wheels: $(if $(wildcard $(TRITON_WHEEL)),✓ installed,✗ not installed)"
|
|
|
|
.PHONY: help
|
|
help:
|
|
@echo "Triton Server Installation Makefile"
|
|
@echo ""
|
|
@echo "Targets:"
|
|
@echo " all - Build and install Triton Server (default)"
|
|
@echo " clean - Remove installed artifacts (keeps build cache)"
|
|
@echo " distclean - Remove everything including build cache"
|
|
@echo " status - Show installation status"
|
|
@echo " help - Show this help message"
|
|
|