Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite

This commit is contained in:
Stephan Barth 2024-10-20 02:07:55 +02:00
commit 6fd68c294e
2 changed files with 47 additions and 51 deletions

View File

@ -100,7 +100,9 @@ start: new-develop start-database start-memcached start-minio start-frontend sta
.PHONY: compile
# HELP: compile frontend and backend
compile: compile-frontend compile-backend;
compile:
$(MAKE) compile-frontend
$(MAKE) compile-backend
.PHONY: lint
# HELP: lint frontend and backend
@ -121,7 +123,10 @@ test: test-frontend test-backend i18n-check;
%-frontend: FRADRIVE_SERVICE=frontend
%-frontend: --image-build --containerized---%-frontend;
--%-frontend: --containerized-static-frontend --containerized-well-known-frontend;
--%-frontend: --containerized-static-frontend --containerized-well-known-frontend
--start-frontend: static
npm run start
# HELP(compile-frontend): compile frontend
--compile-frontend: static well-known;
@ -164,6 +169,15 @@ well-known: static;
%-backend: FRADRIVE_SERVICE=backend
%-backend: --image-build --containerized---%-backend;
--start-backend: start.sh
DEV_PORT_HTTP=`cat $(CONTAINER_FILE) | grep 'DEV_PORT_HTTP=' | sed 's/DEV_PORT_HTTP=//'`; \
DEV_PORT_HTTPS=`cat $(CONTAINER_FILE) | grep 'DEV_PORT_HTTPS=' | sed 's/DEV_PORT_HTTPS=//'`; \
./start.sh
--start-hoogle-backend:
HOOGLE_PORT=`cat $(CONTAINER_FILE) | grep 'HOOGLE_PORT=' | sed 's/HOOGLE_PORT=//'` ; \
echo "${HOOGLE_PORT}" ; \
stack --work-dir .stack-work-doc hoogle -- -server --local --port $${HOOGLE_PORT}
# HELP(compile-backend): compile backend
--compile-backend:
stack build --fast --work-dir .stack-work-build --profile --library-profiling --executable-profiling --flag uniworx:-library-only --local-bin-path $$(pwd)/bin $(stackopts)
@ -232,18 +246,20 @@ db: --image-build --containerized---db;
# --containerized-%-minio: --image-build
# $(MAKE) -- --image-run-$*-minio
--containerized---start-minio:
MINIO_PORT=`cat $(CONTAINER_FILE) | grep 'MINIO_PORT=' | sed 's/MINIO_PORT=//'`; \
MINIO_DIR=`mktemp` ; \
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" "" "rm -rf $${MINIO_DIR}" & \
CONTAINER_ID=`$(CONTAINER_BGRUN) --name fradrive.minio.$$(date +'%Y-%m-%dT%H-%M-%S') $(MINIO_IMAGE) -- server $${MINIO_DIR}` ; \
echo "CONTAINER_ID=$${CONTAINER_ID}" >> $(CONTAINER_FILE)
CONTAINER_ID=`$(CONTAINER_BGRUN) --name fradrive.minio.$$(date +'%Y-%m-%dT%H-%M-%S') $(MINIO_IMAGE) -- server $${MINIO_DIR} --address=:$${MINIO_PORT}` ; \
echo "CONTAINER_ID=$${CONTAINER_ID}\nMINIO_PORT=$${MINIO_PORT}\nMINIO_DIR=$${MINIO_DIR}" >> $(CONTAINER_FILE)
# --containerized-%-memcached: FRADRIVE_SERVICE=memcached
# --containerized-%-memcached: --image-build
# $(MAKE) -- --image-run-$*-memcached
--containerized---start-memcached:
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" &
CONTAINER_ID=`$(CONTAINER_BGRUN) $(MEMCACHED_IMAGE)` ; \
echo "CONTAINER_ID=$${CONTAINER_ID}" >> $(CONTAINER_FILE)
MEMCACHED_PORT=`cat $(CONTAINER_FILE) | grep 'MEMCACHED_PORT=' | sed 's/MEMCACHED_PORT=//'`; \
./utils/watchcontainerrun.sh "$(CONTAINER_COMMAND)" "$(CONTAINER_FILE)" & \
CONTAINER_ID=`$(CONTAINER_BGRUN) $(MEMCACHED_IMAGE) --port=$${MEMCACHED_PORT}` ; \
echo "CONTAINER_ID=$${CONTAINER_ID}\nMEMCACHED_PORT=$${MEMCACHED_PORT}" >> $(CONTAINER_FILE)
--containerized-%-database: FRADRIVE_SERVICE=database
--containerized-%-database: --image-build
@ -278,26 +294,8 @@ image-rebuild-%:
fi \
fi
DATE := $(shell date +'%Y-%m-%dT%H-%M-%S')
SET_DEVELOP = $(eval DEVELOP=develop/`ls -1 develop | tail -n1`)
NEW_DEVELOP = $(eval DEVELOP=develop/$$(DATE))
.PHONY: new-develop
new-develop:
$(NEW_DEVELOP)
mkdir -p $(DEVELOP)
$(MAKE) develop/.current
.PHONY: --develop
--develop:
if ! [[ -e develop ]]; then \
$(MAKE) new-develop; \
fi
$(MAKE) develop/.current
.PHONY: develop/.current
develop/.current:
$(SET_DEVELOP)
echo "$(DEVELOP)" > develop/.current
# TODO: move starts below to respective entries, or leave together?
start-database: BASE_PORTS = "PGPORT=5432"
start-database: SINGLETON = true
@ -332,7 +330,7 @@ start-%: --develop
echo "DEV $(DEVELOP)"
if [[ "$(SINGLETON)" = "true" ]]; then \
CONTAINER_FILE=$(DEVELOP)/$* ; \
if ! [[ -e $${CONTAINER_FILE} ]]; then \
if [[ -e $${CONTAINER_FILE} ]]; then \
>&2 echo "Another $* service is already running! Use \"make new-develop\" or \"make start\" to start a new develop instance despite currently running services." ; \
exit 1 ; \
fi \
@ -345,29 +343,6 @@ start-%: --develop
echo "$(PORTS)" | sed 's/ /\n/g' > $${CONTAINER_FILE} ; \
$(MAKE) -- --containerized---start-$* CONTAINER_FILE=$${CONTAINER_FILE}
--start-backend: start.sh
DEV_PORT_HTTP=`cat $(CONTAINER_FILE) | grep 'DEV_PORT_HTTP=' | sed 's/DEV_PORT_HTTP=//'`; \
DEV_PORT_HTTPS=`cat $(CONTAINER_FILE) | grep 'DEV_PORT_HTTPS=' | sed 's/DEV_PORT_HTTPS=//'`; \
./start.sh
--start-hoogle-backend:
HOOGLE_PORT=`cat $(CONTAINER_FILE) | grep 'HOOGLE_PORT=' | sed 's/HOOGLE_PORT=//'` ; \
echo "${HOOGLE_PORT}" ; \
stack --work-dir .stack-work-doc hoogle -- -server --local --port $${HOOGLE_PORT}
--start-frontend: static
npm run start
# --start-database: docker/database/initdb.sh docker/database/pg_hba.conf docker/database/postgresql.conf docker/database/schema.sql;
# ./utils/watchrun.sh "$(CONTAINER_FILE)"
# TODO: mkdir inside develop/$(DATE)/minio instead of mktemp
# TODO: remove dir in stop-minio
#--containerized---start-minio:
# MINIO_DIR=`mktemp` ; \
# echo "MINIO_DIR=$${MINIO_DIR}" > $(DEVELOP)/minio ; \
# CONTAINER_ID=`$(CONTAINER_RUN) -v $(PWD):/mnt/fradrive --file docker/minio/Dockerfile -- (server $${MINIO_DIR})` ; \
# echo "CONTAINER_ID=$${CONTAINER_ID}" >> $(DEVELOP)/minio
.PHONY: stop
# HELP: stop all currently running develop instances
stop:
@ -394,6 +369,27 @@ log-%:
# TODO: move targets below to better location
DATE := $(shell date +'%Y-%m-%dT%H-%M-%S')
SET_DEVELOP = $(eval DEVELOP=develop/`ls -1 develop | tail -n1`)
NEW_DEVELOP = $(eval DEVELOP=develop/$$(DATE))
.PHONY: new-develop
new-develop:
$(NEW_DEVELOP)
mkdir -p $(DEVELOP)
$(MAKE) develop/.current
.PHONY: --develop
--develop:
if ! [[ -e develop ]]; then \
$(MAKE) new-develop; \
fi
$(MAKE) develop/.current
.PHONY: develop/.current
develop/.current:
$(SET_DEVELOP)
echo "$(DEVELOP)" > develop/.current
# Some convenience aliases:
.PHONY: hoogle
# HELP: alias for start-hoogle

View File

@ -21,7 +21,7 @@ RUN mkdir -p "${PROJECT_DIR}/.stack"
ENV STACK_ROOT="${PROJECT_DIR}/.stack"
RUN make -- --.stack STACK_ROOT=${STACK_ROOT} IN_CONTAINER=true
# RUN stack build yesod-bin
RUN stack build yesod-bin
ENV FRADRIVE_MAKE_TARGET=start-backend
ENTRYPOINT make -- ${FRADRIVE_MAKE_TARGET} STACK_ROOT="${STACK_ROOT}" IN_CONTAINER=true CONTAINER_FILE="${CONTAINER_FILE}"