From e38adb42b3a96663b4eb91df6c33c2a04d76445f Mon Sep 17 00:00:00 2001 From: Stephan Barth Date: Sun, 3 Nov 2024 16:33:18 +0100 Subject: [PATCH] build(Makefile): Rewrite target structured names, continued. --- Makefile | 96 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 51 insertions(+), 45 deletions(-) diff --git a/Makefile b/Makefile index 63c8610bf..5a1da6d7e 100644 --- a/Makefile +++ b/Makefile @@ -90,11 +90,11 @@ release: .PHONY: %-shell # HELP: launch shell (bash) inside a currently running container -%-shell: --%-shell; +%-shell: --%_shell; --shell: $(CONTAINER_COMMAND) exec -it $(EXEC_OPTS) fradrive.$(CURR_DEV).$* $(if $(ENTRYPOINT),$(ENTRYPOINT),/bin/bash) -compile-%: --%-containerized-compile; +compile-%: --%_containerized_--compile; ##### GENERAL TARGETS ##### ########################### @@ -102,50 +102,50 @@ compile-%: --%-containerized-compile; ############################################## ##### SERVICE DEPENDENCIES AND VARIABLES ##### ---frontend-%: FRADRIVE_SERVICE=frontend ---frontend-%: SERVICE_VARIANT=frontend ---frontend-%: SINGLETON = false ---frontend-%: WATCH = false ---frontend-%: +--frontend_%: FRADRIVE_SERVICE=frontend +--frontend_%: SERVICE_VARIANT=frontend +--frontend_%: SINGLETON = false +--frontend_%: WATCH = false +--frontend_%: # TODO --containerized-% is not yet working; comment this in again as soon as it does # $(MAKE) -- --containerized-static --containerized-well-known $(MAKE) -- --$* ---backend-%: FRADRIVE_SERVICE=backend ---backend-%: SERVICE_VARIANT=backend ---backend-%: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443" ---backend-%: SINGLETON = false ---backend-%: - $(MAKE) -- --frontend-containerized-compile +--backend_%: FRADRIVE_SERVICE=backend +--backend_%: SERVICE_VARIANT=backend +--backend_%: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443" +--backend_%: SINGLETON = false +--backend_%: + $(MAKE) -- --frontend_containerized_--compile $(MAKE) -- --$* ---hoogle-%: FRADRIVE_SERVICE=backend ---hoogle-%: SERVICE_VARIANT=hoogle ---hoogle-%: BASE_PORTS = "HOOGLE_PORT=8081" ---hoogle-%: SINGLETON = true ---hoogle-%: +--hoogle_%: FRADRIVE_SERVICE=backend +--hoogle_%: SERVICE_VARIANT=hoogle +--hoogle_%: BASE_PORTS = "HOOGLE_PORT=8081" +--hoogle_%: SINGLETON = true +--hoogle_%: $(MAKE) -- --$* # --uniworxdb was --db in old versions ---uniworxdb-%: FRADRIVE_SERVICE=backend ---uniworxdb-%: SERVICE_VARIANT=uniworxdb ---uniworxdb-%: +--uniworxdb_%: FRADRIVE_SERVICE=backend +--uniworxdb_%: SERVICE_VARIANT=uniworxdb +--uniworxdb_%: $(MAKE) -- --$* ---minio-%: FRADRIVE_SERVICE=minio ---minio-%: SERVICE_VARIANT=minio ---minio-%: +--minio_%: FRADRIVE_SERVICE=minio +--minio_%: SERVICE_VARIANT=minio +--minio_%: $(MAKE) -- --$* ---memcached-%: FRADRIVE_SERVICE=memcached ---memcached-%: SERVICE_VARIANT=memcached ---memcached-%: +--memcached_%: FRADRIVE_SERVICE=memcached +--memcached_%: SERVICE_VARIANT=memcached +--memcached_%: $(MAKE) -- --$* # --postgres was --database in old versions ---postgres-%: BASE_PORTS = "PGPORT=5432" ---postgres-%: SINGLETON = true ---postgres-%: +--postgres_%: BASE_PORTS = "PGPORT=5432" +--postgres_%: SINGLETON = true +--postgres_%: $(MAKE) -- --$* ##### SERVICE DEPENDENCIES AND VARIABLES ##### @@ -164,7 +164,7 @@ compile: $(MAKE) compile-frontend $(MAKE) compile-backend ---compile-%: --checkvarsset --develop --% +--compile_%: --checkvarsset --develop --% .PHONY: lint # HELP: lint frontend and backend @@ -279,7 +279,7 @@ ifeq ($(SERVICE_VARIANT), backend) endif # HELP(uniworxdb): clear and fill database. requires running postgres -uniworxdb: --frontend-compile --backend-imagebuild-containerized-uniworxdb-start; +uniworxdb: --frontend_compile --backend_imagebuild_containerized_--uniworxdb_start; # TODO (db-m-$MIGRATION-backend): apply migration (see src/Model/Migration/Definition.hs for list of available migrations) ifeq ($(SERVICE_VARIANT), uniworxdb) --start: .stack @@ -293,7 +293,7 @@ endif if [ "$(IN_CONTAINER)" == "true" ] ; then \ $(MAKE) -- --.stack ; \ else \ - $(MAKE) -- --image-run---.stack ; \ + $(MAKE) -- --imagerun_--.stack ; \ fi --.stack: stack.yaml stack.yaml.lock package.yaml stack build --fast --only-dependencies @@ -306,11 +306,11 @@ endif ##### DATABASE TARGETS ##### ifeq ($(SERVICE_VARIANT), postgres) ---containerized-%: --checkvarsset docker/database/initdb.sh docker/database/pg_hba.conf docker/database/postgresql.conf docker/database/schema.sql --image-build - $(MAKE) -- --imagerun-$* +--containerized_%: --checkvarsset docker/database/initdb.sh docker/database/pg_hba.conf docker/database/postgresql.conf docker/database/schema.sql --image-build + $(MAKE) -- --imagerun_$* else ---containerized-%: --checkvarsset - $(MAKE) -- --imagerun-$* +--containerized_%: --checkvarsset + $(MAKE) -- --imagerun_$* endif .PHONY: psql @@ -344,7 +344,7 @@ psql: --database-shell; # --containerized-%-minio: --image-build # $(MAKE) -- --image-run-$*-minio ifeq ($(SERVICE_VARIANT), minio) ---containerized-start: +--containerized_start: UPLOAD_S3_PORT=`cat $(CONTAINER_FILE) | grep 'UPLOAD_S3_PORT=' | sed 's/UPLOAD_S3_PORT=//'`; \ MINIO_DIR=`mktemp` ; \ ./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" "" "rm -rf $${MINIO_DIR}" & \ @@ -356,7 +356,7 @@ endif # --containerized-%-memcached: --image-build # $(MAKE) -- --image-run-$*-memcached ifeq ($(SERVICE_VARIANT), memcached) ---containerized-start: +--containerized_start: MEMCACHED_PORT=`cat $(CONTAINER_FILE) | grep 'MEMCACHED_PORT=' | sed 's/MEMCACHED_PORT=//'`; \ ./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" & \ CONTAINER_ID=`$(CONTAINER_BGRUN) --name fradrive.$(CURR_DEV).memcached $(MEMCACHED_IMAGE) --port=$${MEMCACHED_PORT}` ; \ @@ -365,7 +365,7 @@ endif .PHONY: image-rebuild # HELP(image-rebuild-{backend,frontend,database,memcached,minio}): force-rebuild the stated docker image -image-rebuild-%: +image-rebuild_%: $(MAKE) -- --image-build FRADRIVE_SERVICE=$* NO_CACHE=--no-cache --image-build: rm -f .Dockerfile @@ -380,16 +380,16 @@ image-rebuild-%: fi # runs --% in the container. Targets meant to be called manually cannot be run in the container via this target. If that is ever needed split this target into two targets, one for manually one for automatic (one may use the other) so that not at every usage a '---' has to be after containerized ---imagerun-%: --checkvarsset docker/$(FRADRIVE_SERVICE)/Dockerfile +--imagerun_%: --checkvarsset docker/$(FRADRIVE_SERVICE)/Dockerfile MOUNT_DIR=/mnt/fradrive; \ if [ "$(IN_CONTAINER)" == "true" ] ; then \ $(MAKE) -- $* ; \ else \ if [ -z "$(CONTAINER_FILE)" ] ; then \ - $(CONTAINER_FGRUN) -v $(PWD):$${MOUNT_DIR} --env FRADRIVE_SERVICE=$(FRADRIVE_SERVICE) --env SERVICE_VARIANT=$(SERVICE_VARIANT) --env IN_CONTAINER=true --env FRADRIVE_MAKE_TARGET=--$* --env CONTAINER_FILE=$(CONTAINER_FILE) --env CONTAINER_FILE_CONTENT=$(CONTAINER_FILE_CONTENT) --env WATCH=$(WATCH) --name fradrive.$(CURR_DEV).$(SERVICE_VARIANT) localhost/fradrive/$(FRADRIVE_SERVICE) ; \ + $(CONTAINER_FGRUN) -v $(PWD):$${MOUNT_DIR} --env FRADRIVE_SERVICE=$(FRADRIVE_SERVICE) --env SERVICE_VARIANT=$(SERVICE_VARIANT) --env IN_CONTAINER=true --env FRADRIVE_MAKE_TARGET=$* --env CONTAINER_FILE=$(CONTAINER_FILE) --env CONTAINER_FILE_CONTENT=$(CONTAINER_FILE_CONTENT) --env WATCH=$(WATCH) --name fradrive.$(CURR_DEV).$(SERVICE_VARIANT) localhost/fradrive/$(FRADRIVE_SERVICE) ; \ else \ ./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" & \ - CONTAINER_ID=`$(CONTAINER_BGRUN) -v $(PWD):$${MOUNT_DIR} --env FRADRIVE_SERVICE=$(FRADRIVE_SERVICE) --env SERVICE_VARIANT=$(SERVICE_VARIANT) --env IN_CONTAINER=true --env FRADRIVE_MAKE_TARGET=--$* --env CONTAINER_FILE=$(CONTAINER_FILE) --env CONTAINER_FILE_CONTENT=$(CONTAINER_FILE_CONTENT) --env WATCH=$(WATCH) --name fradrive.$(CURR_DEV).$(SERVICE_VARIANT) localhost/fradrive/$(FRADRIVE_SERVICE)` ; \ + CONTAINER_ID=`$(CONTAINER_BGRUN) -v $(PWD):$${MOUNT_DIR} --env FRADRIVE_SERVICE=$(FRADRIVE_SERVICE) --env SERVICE_VARIANT=$(SERVICE_VARIANT) --env IN_CONTAINER=true --env FRADRIVE_MAKE_TARGET=$* --env CONTAINER_FILE=$(CONTAINER_FILE) --env CONTAINER_FILE_CONTENT=$(CONTAINER_FILE_CONTENT) --env WATCH=$(WATCH) --name fradrive.$(CURR_DEV).$(SERVICE_VARIANT) localhost/fradrive/$(FRADRIVE_SERVICE)` ; \ echo "CONTAINER_ID=$${CONTAINER_ID}" >> "$(CONTAINER_FILE)"; \ fi \ fi @@ -402,7 +402,13 @@ image-rebuild-%: # HELP(start-backend): serve yesod development site # HELP(start-frontend): start frontend watcher. Watches frontend source files for changes and recompiles on change. (TODO: watcher functionality currently broken!) # HELP(start-hoogle): serve local hoogle instance +# TODO reformulate target to use the '--%_'-mechanism +# --autostart: use the SERVICE_VARIANT for the decision which service to start +--autostart: --checkvarsset + $(MAKE) -- start-$(SERVICE_VARIANT) + start-%: FRADRIVE_SERVICE = % +start-%: SERVICE_VARIANT = % start-%: PORTS = $(foreach PORT,$(BASE_PORTS),$(shell utils/next_free_port.pl $(PORT))) start-%: --develop echo "$*" @@ -421,7 +427,7 @@ start-%: --develop CONTAINER_FILE=$${DEVDIR}-$$(($${I}+1)); \ fi ; \ echo "$(PORTS)" | sed 's/ /\n/g' > $${CONTAINER_FILE} ; \ - $(MAKE) -- --containerized---start-$* CONTAINER_FILE=$${CONTAINER_FILE} + $(MAKE) -- --containerized_--autostart CONTAINER_FILE=$${CONTAINER_FILE} .PHONY: stop # HELP: stop all currently running develop instances @@ -494,7 +500,7 @@ hoogle: start-hoogle; .PHONY: i18n-check # HELP: check internationalization -i18n-check: --image-run---i18n-check +i18n-check: --imagerun_--i18n-check --i18n-check: ./missing-translations.sh @echo No missing translations.