build(Makefile): Rewrite target structured names, continued.

This commit is contained in:
Stephan Barth 2024-11-03 16:33:18 +01:00
parent 1b5c02fffd
commit e38adb42b3

View File

@ -90,11 +90,11 @@ release:
.PHONY: %-shell .PHONY: %-shell
# HELP: launch shell (bash) inside a currently running container # HELP: launch shell (bash) inside a currently running container
%-shell: --%-shell; %-shell: --%_shell;
--shell: --shell:
$(CONTAINER_COMMAND) exec -it $(EXEC_OPTS) fradrive.$(CURR_DEV).$* $(if $(ENTRYPOINT),$(ENTRYPOINT),/bin/bash) $(CONTAINER_COMMAND) exec -it $(EXEC_OPTS) fradrive.$(CURR_DEV).$* $(if $(ENTRYPOINT),$(ENTRYPOINT),/bin/bash)
compile-%: --%-containerized-compile; compile-%: --%_containerized_--compile;
##### GENERAL TARGETS ##### ##### GENERAL TARGETS #####
########################### ###########################
@ -102,50 +102,50 @@ compile-%: --%-containerized-compile;
############################################## ##############################################
##### SERVICE DEPENDENCIES AND VARIABLES ##### ##### SERVICE DEPENDENCIES AND VARIABLES #####
--frontend-%: FRADRIVE_SERVICE=frontend --frontend_%: FRADRIVE_SERVICE=frontend
--frontend-%: SERVICE_VARIANT=frontend --frontend_%: SERVICE_VARIANT=frontend
--frontend-%: SINGLETON = false --frontend_%: SINGLETON = false
--frontend-%: WATCH = false --frontend_%: WATCH = false
--frontend-%: --frontend_%:
# TODO --containerized-% is not yet working; comment this in again as soon as it does # TODO --containerized-% is not yet working; comment this in again as soon as it does
# $(MAKE) -- --containerized-static --containerized-well-known # $(MAKE) -- --containerized-static --containerized-well-known
$(MAKE) -- --$* $(MAKE) -- --$*
--backend-%: FRADRIVE_SERVICE=backend --backend_%: FRADRIVE_SERVICE=backend
--backend-%: SERVICE_VARIANT=backend --backend_%: SERVICE_VARIANT=backend
--backend-%: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443" --backend_%: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443"
--backend-%: SINGLETON = false --backend_%: SINGLETON = false
--backend-%: --backend_%:
$(MAKE) -- --frontend-containerized-compile $(MAKE) -- --frontend_containerized_--compile
$(MAKE) -- --$* $(MAKE) -- --$*
--hoogle-%: FRADRIVE_SERVICE=backend --hoogle_%: FRADRIVE_SERVICE=backend
--hoogle-%: SERVICE_VARIANT=hoogle --hoogle_%: SERVICE_VARIANT=hoogle
--hoogle-%: BASE_PORTS = "HOOGLE_PORT=8081" --hoogle_%: BASE_PORTS = "HOOGLE_PORT=8081"
--hoogle-%: SINGLETON = true --hoogle_%: SINGLETON = true
--hoogle-%: --hoogle_%:
$(MAKE) -- --$* $(MAKE) -- --$*
# --uniworxdb was --db in old versions # --uniworxdb was --db in old versions
--uniworxdb-%: FRADRIVE_SERVICE=backend --uniworxdb_%: FRADRIVE_SERVICE=backend
--uniworxdb-%: SERVICE_VARIANT=uniworxdb --uniworxdb_%: SERVICE_VARIANT=uniworxdb
--uniworxdb-%: --uniworxdb_%:
$(MAKE) -- --$* $(MAKE) -- --$*
--minio-%: FRADRIVE_SERVICE=minio --minio_%: FRADRIVE_SERVICE=minio
--minio-%: SERVICE_VARIANT=minio --minio_%: SERVICE_VARIANT=minio
--minio-%: --minio_%:
$(MAKE) -- --$* $(MAKE) -- --$*
--memcached-%: FRADRIVE_SERVICE=memcached --memcached_%: FRADRIVE_SERVICE=memcached
--memcached-%: SERVICE_VARIANT=memcached --memcached_%: SERVICE_VARIANT=memcached
--memcached-%: --memcached_%:
$(MAKE) -- --$* $(MAKE) -- --$*
# --postgres was --database in old versions # --postgres was --database in old versions
--postgres-%: BASE_PORTS = "PGPORT=5432" --postgres_%: BASE_PORTS = "PGPORT=5432"
--postgres-%: SINGLETON = true --postgres_%: SINGLETON = true
--postgres-%: --postgres_%:
$(MAKE) -- --$* $(MAKE) -- --$*
##### SERVICE DEPENDENCIES AND VARIABLES ##### ##### SERVICE DEPENDENCIES AND VARIABLES #####
@ -164,7 +164,7 @@ compile:
$(MAKE) compile-frontend $(MAKE) compile-frontend
$(MAKE) compile-backend $(MAKE) compile-backend
--compile-%: --checkvarsset --develop --% --compile_%: --checkvarsset --develop --%
.PHONY: lint .PHONY: lint
# HELP: lint frontend and backend # HELP: lint frontend and backend
@ -279,7 +279,7 @@ ifeq ($(SERVICE_VARIANT), backend)
endif endif
# HELP(uniworxdb): clear and fill database. requires running postgres # 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) # TODO (db-m-$MIGRATION-backend): apply migration (see src/Model/Migration/Definition.hs for list of available migrations)
ifeq ($(SERVICE_VARIANT), uniworxdb) ifeq ($(SERVICE_VARIANT), uniworxdb)
--start: .stack --start: .stack
@ -293,7 +293,7 @@ endif
if [ "$(IN_CONTAINER)" == "true" ] ; then \ if [ "$(IN_CONTAINER)" == "true" ] ; then \
$(MAKE) -- --.stack ; \ $(MAKE) -- --.stack ; \
else \ else \
$(MAKE) -- --image-run---.stack ; \ $(MAKE) -- --imagerun_--.stack ; \
fi fi
--.stack: stack.yaml stack.yaml.lock package.yaml --.stack: stack.yaml stack.yaml.lock package.yaml
stack build --fast --only-dependencies stack build --fast --only-dependencies
@ -306,11 +306,11 @@ endif
##### DATABASE TARGETS ##### ##### DATABASE TARGETS #####
ifeq ($(SERVICE_VARIANT), postgres) 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 --containerized_%: --checkvarsset docker/database/initdb.sh docker/database/pg_hba.conf docker/database/postgresql.conf docker/database/schema.sql --image-build
$(MAKE) -- --imagerun-$* $(MAKE) -- --imagerun_$*
else else
--containerized-%: --checkvarsset --containerized_%: --checkvarsset
$(MAKE) -- --imagerun-$* $(MAKE) -- --imagerun_$*
endif endif
.PHONY: psql .PHONY: psql
@ -344,7 +344,7 @@ psql: --database-shell;
# --containerized-%-minio: --image-build # --containerized-%-minio: --image-build
# $(MAKE) -- --image-run-$*-minio # $(MAKE) -- --image-run-$*-minio
ifeq ($(SERVICE_VARIANT), minio) ifeq ($(SERVICE_VARIANT), minio)
--containerized-start: --containerized_start:
UPLOAD_S3_PORT=`cat $(CONTAINER_FILE) | grep 'UPLOAD_S3_PORT=' | sed 's/UPLOAD_S3_PORT=//'`; \ UPLOAD_S3_PORT=`cat $(CONTAINER_FILE) | grep 'UPLOAD_S3_PORT=' | sed 's/UPLOAD_S3_PORT=//'`; \
MINIO_DIR=`mktemp` ; \ MINIO_DIR=`mktemp` ; \
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" "" "rm -rf $${MINIO_DIR}" & \ ./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" "" "rm -rf $${MINIO_DIR}" & \
@ -356,7 +356,7 @@ endif
# --containerized-%-memcached: --image-build # --containerized-%-memcached: --image-build
# $(MAKE) -- --image-run-$*-memcached # $(MAKE) -- --image-run-$*-memcached
ifeq ($(SERVICE_VARIANT), memcached) ifeq ($(SERVICE_VARIANT), memcached)
--containerized-start: --containerized_start:
MEMCACHED_PORT=`cat $(CONTAINER_FILE) | grep 'MEMCACHED_PORT=' | sed 's/MEMCACHED_PORT=//'`; \ MEMCACHED_PORT=`cat $(CONTAINER_FILE) | grep 'MEMCACHED_PORT=' | sed 's/MEMCACHED_PORT=//'`; \
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" & \ ./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" & \
CONTAINER_ID=`$(CONTAINER_BGRUN) --name fradrive.$(CURR_DEV).memcached $(MEMCACHED_IMAGE) --port=$${MEMCACHED_PORT}` ; \ CONTAINER_ID=`$(CONTAINER_BGRUN) --name fradrive.$(CURR_DEV).memcached $(MEMCACHED_IMAGE) --port=$${MEMCACHED_PORT}` ; \
@ -365,7 +365,7 @@ endif
.PHONY: image-rebuild .PHONY: image-rebuild
# HELP(image-rebuild-{backend,frontend,database,memcached,minio}): force-rebuild the stated docker image # 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 $(MAKE) -- --image-build FRADRIVE_SERVICE=$* NO_CACHE=--no-cache
--image-build: --image-build:
rm -f .Dockerfile rm -f .Dockerfile
@ -380,16 +380,16 @@ image-rebuild-%:
fi 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 # 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; \ MOUNT_DIR=/mnt/fradrive; \
if [ "$(IN_CONTAINER)" == "true" ] ; then \ if [ "$(IN_CONTAINER)" == "true" ] ; then \
$(MAKE) -- $* ; \ $(MAKE) -- $* ; \
else \ else \
if [ -z "$(CONTAINER_FILE)" ] ; then \ 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 \ else \
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" & \ ./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)"; \ echo "CONTAINER_ID=$${CONTAINER_ID}" >> "$(CONTAINER_FILE)"; \
fi \ fi \
fi fi
@ -402,7 +402,13 @@ image-rebuild-%:
# HELP(start-backend): serve yesod development site # 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-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 # 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-%: FRADRIVE_SERVICE = %
start-%: SERVICE_VARIANT = %
start-%: PORTS = $(foreach PORT,$(BASE_PORTS),$(shell utils/next_free_port.pl $(PORT))) start-%: PORTS = $(foreach PORT,$(BASE_PORTS),$(shell utils/next_free_port.pl $(PORT)))
start-%: --develop start-%: --develop
echo "$*" echo "$*"
@ -421,7 +427,7 @@ start-%: --develop
CONTAINER_FILE=$${DEVDIR}-$$(($${I}+1)); \ CONTAINER_FILE=$${DEVDIR}-$$(($${I}+1)); \
fi ; \ fi ; \
echo "$(PORTS)" | sed 's/ /\n/g' > $${CONTAINER_FILE} ; \ echo "$(PORTS)" | sed 's/ /\n/g' > $${CONTAINER_FILE} ; \
$(MAKE) -- --containerized---start-$* CONTAINER_FILE=$${CONTAINER_FILE} $(MAKE) -- --containerized_--autostart CONTAINER_FILE=$${CONTAINER_FILE}
.PHONY: stop .PHONY: stop
# HELP: stop all currently running develop instances # HELP: stop all currently running develop instances
@ -494,7 +500,7 @@ hoogle: start-hoogle;
.PHONY: i18n-check .PHONY: i18n-check
# HELP: check internationalization # HELP: check internationalization
i18n-check: --image-run---i18n-check i18n-check: --imagerun_--i18n-check
--i18n-check: --i18n-check:
./missing-translations.sh ./missing-translations.sh
@echo No missing translations. @echo No missing translations.