build(Makefile): introduce log targets, use separate stack-work-dirs for better caching
This commit is contained in:
parent
a8eaddde3a
commit
80e4c45a66
41
Makefile
41
Makefile
@ -49,13 +49,12 @@ help:
|
|||||||
utils/makehelp.pl Makefile ; \
|
utils/makehelp.pl Makefile ; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean%
|
||||||
# HELP: remove all compilation results in the directory but leave containers and images unharmed
|
# HELP: remove all compilation results in the directory but leave containers and images unharmed
|
||||||
clean:
|
clean:
|
||||||
rm -rf node_modules .npm .cache assets/icons assets/favicons static well-known
|
rm -rf node_modules .npm .cache assets/icons assets/favicons static well-known
|
||||||
rm -rf .stack .stack-work .stack-work-build .stack-work-run .stack-work-test .stack-work-doc
|
rm -rf .stack .stack-work .stack-work-build .stack-work-run .stack-work-test .stack-work-doc
|
||||||
rm -rf bin/ .Dockerfile .dev-port-http .dev-port-https
|
rm -rf bin/ .Dockerfile develop/
|
||||||
.PHONY: clean-all
|
|
||||||
# HELP: like clean but with container and image prune
|
# HELP: like clean but with container and image prune
|
||||||
clean-all: clean
|
clean-all: clean
|
||||||
$(CONTAINER_COMMAND) system prune --all --force --volumes
|
$(CONTAINER_COMMAND) system prune --all --force --volumes
|
||||||
@ -203,15 +202,15 @@ serve-backend:
|
|||||||
|
|
||||||
# HELP(compile-backend): compile backend
|
# HELP(compile-backend): compile backend
|
||||||
--compile-backend:
|
--compile-backend:
|
||||||
stack build --fast --profile --library-profiling --executable-profiling --flag uniworx:-library-only --local-bin-path $$(pwd)/bin $(stackopts)
|
stack build --fast --work-dir .stack-work-build --profile --library-profiling --executable-profiling --flag uniworx:-library-only --local-bin-path $$(pwd)/bin $(stackopts)
|
||||||
|
|
||||||
# HELP(lint-backend): lint backend
|
# HELP(lint-backend): lint backend
|
||||||
--lint-backend:
|
--lint-backend:
|
||||||
stack build --test --fast --flag uniworx:library-only uniworx:test:hlint $(stackopts)
|
stack build --test --fast --work-dir .stack-work-test --flag uniworx:library-only uniworx:test:hlint $(stackopts)
|
||||||
|
|
||||||
# HELP(test-backend): test backend
|
# HELP(test-backend): test backend
|
||||||
--test-backend:
|
--test-backend:
|
||||||
stack build --test --coverage --fast --flag uniworx:library-only $(stackopts)
|
stack build --test --coverage --fast --workdir .stack-work-test --flag uniworx:library-only $(stackopts)
|
||||||
|
|
||||||
# HELP(db-cf-backend): clear and fill database. requires running postgres
|
# HELP(db-cf-backend): clear and fill database. requires running postgres
|
||||||
# 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)
|
||||||
@ -346,8 +345,10 @@ start-minio: SINGLETON = true
|
|||||||
|
|
||||||
start-backend: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443"
|
start-backend: BASE_PORTS = "DEV_PORT_HTTP=3000" "DEV_PORT_HTTPS=3443"
|
||||||
start-backend: SINGLETON = false
|
start-backend: SINGLETON = false
|
||||||
|
start-hoogle: BASE_PORT = "HOOGLE_PORT=8081"
|
||||||
|
|
||||||
start-frontend: SINGLETON = false
|
start-frontend: SINGLETON = false
|
||||||
|
start-frontend: WATCH = true
|
||||||
|
|
||||||
start-%: FRADRIVE_SERVICE = %
|
start-%: FRADRIVE_SERVICE = %
|
||||||
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)))
|
||||||
@ -359,10 +360,9 @@ start-%: --ensure-develop
|
|||||||
CONTAINER_FILE=$(DEVELOP)/$* ; \
|
CONTAINER_FILE=$(DEVELOP)/$* ; \
|
||||||
else \
|
else \
|
||||||
DEVDIR=$(DEVELOP)/$*; \
|
DEVDIR=$(DEVELOP)/$*; \
|
||||||
mkdir -p $${DEVDIR}; \
|
|
||||||
I=`ls $${DEVDIR} | sort -n | tail -n1`; \
|
I=`ls $${DEVDIR} | sort -n | tail -n1`; \
|
||||||
echo "$${I}"; \
|
echo "$${I}"; \
|
||||||
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---start-$* CONTAINER_FILE=$${CONTAINER_FILE}
|
||||||
@ -370,7 +370,10 @@ start-%: --ensure-develop
|
|||||||
--start-backend: start.sh
|
--start-backend: start.sh
|
||||||
DEV_PORT_HTTP=`cat $(CONTAINER_FILE) | grep 'DEV_PORT_HTTP=' | sed 's/DEV_PORT_HTTP=//'`; \
|
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=//'`; \
|
DEV_PORT_HTTPS=`cat $(CONTAINER_FILE) | grep 'DEV_PORT_HTTPS=' | sed 's/DEV_PORT_HTTPS=//'`; \
|
||||||
./utils/watchrun-container.sh "$(CONTAINER_FILE)" ./start.sh
|
./utils/watchrun.sh "$(CONTAINER_FILE)" ./start.sh
|
||||||
|
--start-hoogle: hoogle.sh
|
||||||
|
HOOGLE_PORT=`cat $(CONTAINER_FILE) | grep 'HOOGLE_PORT=' | sed 's/HOOGLE_PORT=//'` ; \
|
||||||
|
./utils/watchrun.sh "$(CONTAINER_FILE)" ./hoogle.sh
|
||||||
|
|
||||||
--containerized---start-database: FRADRIVE_SERVICE=database
|
--containerized---start-database: FRADRIVE_SERVICE=database
|
||||||
# port forwarding is disabled in --network=host mode; nevertheless it is stated here for documentation reasons
|
# port forwarding is disabled in --network=host mode; nevertheless it is stated here for documentation reasons
|
||||||
@ -392,17 +395,17 @@ start-%: --ensure-develop
|
|||||||
# TODO: find way to stop a single container, e.g. by removing the file
|
# TODO: find way to stop a single container, e.g. by removing the file
|
||||||
.PHONY: stop-%
|
.PHONY: stop-%
|
||||||
stop-%: --stop-%
|
stop-%: --stop-%
|
||||||
$(MAKE) stop-container CONTAINER_FILE=TODO
|
rm -rf $(DEVELOP)/$*
|
||||||
.PHONY: --stop-minio
|
|
||||||
--stop-minio:
|
|
||||||
MINIO_DIR=`cat $(DEVELOP)/minio`
|
|
||||||
rm -rf $${MINIO_DIR}
|
|
||||||
|
|
||||||
stop-container-by-id:
|
|
||||||
podman stop $(CONTAINER_ID)
|
|
||||||
stop-container-by-file:
|
stop-container-by-file:
|
||||||
CONTAINER_ID=`grep 'CONTAINER_ID=' $(CONTAINER_FILE) | sed 's/CONTAINER_ID=//'` ; \
|
rm $(CONTAINER_FILE)
|
||||||
$(MAKE) stop-container-by-id CONTAINER_ID=$${CONTAINER_ID}
|
stop-container-by-id:
|
||||||
|
$(CONTAINER_COMMAND) stop $(CONTAINER_ID)
|
||||||
|
# CONTAINER_ID=`grep 'CONTAINER_ID=' $(CONTAINER_FILE) | sed 's/CONTAINER_ID=//'` ; \
|
||||||
|
# $(MAKE) stop-container-by-id CONTAINER_ID=$${CONTAINER_ID}
|
||||||
|
|
||||||
|
.PHONY: log-%
|
||||||
|
log-%:
|
||||||
|
$(CONTAINER_COMMAND) logs `cat develop/$(CURRENT_DEVELOP)/$* | grep CONTAINER_ID= | sed 's/^CONTAINER_ID=//'`
|
||||||
|
|
||||||
##### CONTAINER TARGETS #####
|
##### CONTAINER TARGETS #####
|
||||||
#############################
|
#############################
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
|
# SPDX-FileCopyrightText: 2022-2024 Sarah Vaupel <sarah.vaupel@uniworx.de>, Gregor Kleen <gregor.kleen@ifi.lmu.de>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
@ -19,4 +19,4 @@ if [[ -d .stack-work-doc ]]; then
|
|||||||
trap move-back EXIT
|
trap move-back EXIT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
stack hoogle -- ${@:-server --local --port $((${PORT_OFFSET:-$(((16#$(echo \"fradrive $(whoami)\" | sha256sum | head -c 16)) % 1000))} + 8081))}
|
stack hoogle -- ${@:-server --local --work-dir .stack-work-doc --port $HOOGLE_PORT}
|
||||||
|
|||||||
4
start.sh
4
start.sh
@ -38,10 +38,10 @@ unset HOST
|
|||||||
|
|
||||||
if ! [ -z "$(which yesod)" ]
|
if ! [ -z "$(which yesod)" ]
|
||||||
then
|
then
|
||||||
yesod devel -p "$DEV_PORT_HTTP" -q "$DEV_PORT_HTTPS" $@
|
yesod devel --work-dir .stack-work-run -p "$DEV_PORT_HTTP" -q "$DEV_PORT_HTTPS" $@
|
||||||
elif ! [ -z "$(which stack)" ]
|
elif ! [ -z "$(which stack)" ]
|
||||||
then
|
then
|
||||||
stack exec -- yesod devel -p "$DEV_PORT_HTTP" -q "$DEV_PORT_HTTPS" $@
|
stack exec -- yesod devel --work-dir .stack-work-run -p "$DEV_PORT_HTTP" -q "$DEV_PORT_HTTPS" $@
|
||||||
else
|
else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -1,5 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
STOPSCRIPT="make stop-container-by-id CONTAINFER_FILE=${CONTAINER_FILE} ; $3"
|
|
||||||
|
|
||||||
./utils/watchrun.sh "$1" "$2"
|
|
||||||
@ -1,5 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
#UTILPATH=`echo "$0" | sed 's/\/[^\/]+$//'`
|
||||||
|
UTILPATH=${0%/*}
|
||||||
|
|
||||||
FILENAME=$1
|
FILENAME=$1
|
||||||
STARTSCRIPT=$2
|
STARTSCRIPT=$2
|
||||||
STOPSCRIPT=$3
|
STOPSCRIPT=$3
|
||||||
@ -8,6 +11,7 @@ touch "$FILENAME"
|
|||||||
|
|
||||||
(
|
(
|
||||||
while [ -e "$FILENAME" ] ; do
|
while [ -e "$FILENAME" ] ; do
|
||||||
|
sleep 1
|
||||||
inotifywait -e ATTRIB -t 10 "$FILENAME" > /dev/null 2&>/dev/null
|
inotifywait -e ATTRIB -t 10 "$FILENAME" > /dev/null 2&>/dev/null
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -16,4 +20,4 @@ $STOPSCRIPT
|
|||||||
kill `cat /tmp/pidwrapper`
|
kill `cat /tmp/pidwrapper`
|
||||||
) &
|
) &
|
||||||
|
|
||||||
/mnt/fradrive/utils/runwrapper.sh "$STARTSCRIPT"
|
$UTILPATH/runwrapper.sh "$STARTSCRIPT"
|
||||||
|
|||||||
Reference in New Issue
Block a user