From 189360e6ad34d02cec6e923c838aa1786a8fcf05 Mon Sep 17 00:00:00 2001 From: Max Melchert <maximilian.melchert@stud.hs-bochum.de> Date: Wed, 12 Mar 2025 12:14:58 +0100 Subject: [PATCH] feat: rename makefile to allow multiple makefiles --- src/makefile/README.md | 7 ++-- src/makefile/basic.mk | 77 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 src/makefile/basic.mk diff --git a/src/makefile/README.md b/src/makefile/README.md index ded7a56..ca4872e 100644 --- a/src/makefile/README.md +++ b/src/makefile/README.md @@ -42,11 +42,12 @@ Vorteile von _Byobu_: ## Installation -1. Makefile [herunterladen](./makefile) +1. Makefile [herunterladen](./basic.mk) 2. Makefile in Projektordner speichern - Projektstruktur ([Beispiel](#projektstruktur)) -3. Makefile [konfigurieren](#konfiguration) -4. `make install` +3. Makefile in `Makefile` oder `makefile` umbenennen +4. Makefile [konfigurieren](#konfiguration) +5. `make install` <details> <summary>Details anzeigen</summary> diff --git a/src/makefile/basic.mk b/src/makefile/basic.mk new file mode 100644 index 0000000..8abe373 --- /dev/null +++ b/src/makefile/basic.mk @@ -0,0 +1,77 @@ +# Configuration + +## Server +SERVER_USER := mmustermann +SERVER_HOST := hyrican-1-extern + +## Python Environment +CONDA_PATH := ~/.local/opt/conda +CONDA_ENV := ml +PYTHON_VERSION := 3.10 +PYTHON_PACKAGES := tensorflow-cpu ipympl mypy jupyter pystan \ + matplotlib seaborn scikit-learn openpyxl odfpy pyarrow \ + geopandas descartes pyogrio optuna plotly tqdm spyder \ + jax-jumpy moviepy shimmy-atari gymnasium-box2d \ + ipywidgets notebook lxml fastparquet zstandard \ + contextily networkx pyvis netgraph pip + +## Project Files +MAIN_SCRIPT := main.py +LOG_FILE := progress.log + +## Local Project Paths +LOCAL_PROJECT_DIR := . +LOCAL_OUTPUT_DIR := output + +## Remote Project Paths +REMOTE_PROJECT_DIR := ~/my_project +REMOTE_OUTPUT_FILES := output/* + +## Misc +COPY_LINKS_AS_FILES ?= false + +# --- + +LOGIN := $(SERVER_USER)@$(SERVER_HOST) +SSH := ssh $(LOGIN) +RSYNC := rsync --archive --compress --progress $(if $(filter true,$(COPY_LINKS_AS_FILES)),--copy-links) +CONDA := source $(CONDA_PATH)/etc/profile.d/conda.sh && conda + +.PHONY: install upload run kill log download delete + +help: # list targets and usage + @awk '/^[a-zA-Z0-9_-]+:/{print $1}' makefile + +install: # install conda environment + $(SSH) '\ + $(CONDA) create -n $(CONDA_ENV) python=$(PYTHON_VERSION) $(PYTHON_PACKAGES)\ + ' + +upload: # upload project files from client to server + $(RSYNC) $(LOCAL_PROJECT_DIR)/ $(LOGIN):$(REMOTE_PROJECT_DIR) + +run: # execute main script on server + $(SSH) '\ + cd $(REMOTE_PROJECT_DIR);\ + $(CONDA) activate $(CONDA_ENV);\ + python $(MAIN_SCRIPT);\ + $(CONDA) deactivate;\ + ' + +kill: # terminate the running script on the server + $(SSH) '\ + pkill -f $(MAIN_SCRIPT)\ + ' + +log: # show the last lines of the log file + $(SSH) '\ + cd $(REMOTE_PROJECT_DIR) && tail -f $(LOG_FILE)\ + ' + +download: # download output files from server to client + $(RSYNC) $(LOGIN):$(REMOTE_PROJECT_DIR)/$(REMOTE_OUTPUT_FILES) $(LOCAL_PROJECT_DIR)/$(LOCAL_OUTPUT_DIR) + +delete: # remove/delete all project files on server + $(SSH) '\ + rm -rf $(REMOTE_PROJECT_DIR)\ + ' -- GitLab